找出传递给 SaveChanges 方法的对象类型

使用实体框架,我覆盖了 SaveChanges 方法。


但是我想不出一个好的解决方案来确定对象是否从我的基类派生。如果是这样,我想从基类调用一个方法。


我有这样的对象


public class BaseClass : EntityData { 

  public void DoSomething() { … }

}

public class B : BaseClass  { … }

public class C : BaseClass  { … }

public class D : EntityData { … }

在我的 SaveChanges 方法中,我想做这样的事情:


public override int SaveChanges() {

   var changedEntitles = ChangeTracker.Entries().Where

   (_ => _.State == EntityState.Added || _.State == EntityState.Modified);

   foreach (var obj in changedEntitles)  {

       if( "obj is of type baseClass ") {  <---- need some help here

           obj.DoSomething();   <--- and here.

       }

   }

   return base.SaveChanges();

}

我需要 B 类和 C 类应该:DoSomething(),D 类应该被忽略。


希望您能够帮助我。


慕标5832272
浏览 137回答 1
1回答

慕仙森

我建议您使用检查其类型is以避免不必要的强制转换。if(obj.Entity is BaseClass) {&nbsp; &nbsp; ((BaseClass)obj).DoSomething();}
打开App,查看更多内容
随时随地看视频慕课网APP