Выясните, какой тип объекта передается методу SaveChanges - PullRequest
0 голосов
/ 28 мая 2018

Используя структуру сущностей, я переопределяю метод 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 следует игнорировать.

Надеюсь, вы мне поможете.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Я бы посоветовал вам проверить его тип, используя is, чтобы избежать ненужного приведения.

if(obj.Entity is BaseClass) {
    ((BaseClass)obj).DoSomething();
}
0 голосов
/ 28 мая 2018

as проверяет, является ли экземпляр правильного типа.Если это так, он возвращает приведенный экземпляр как этот тип, в противном случае он возвращает null.

var bc = obj as BaseClass;
if (bc != null) {
   bc.DoSomething();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...