Вызывает метод «Find» для неизвестных DbSet бросков: «Объект не соответствует цели». - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу запустить метод «Найти» на неизвестном DbSet.И найдите запись с именем «строка».Я делаю это так:

PropertyInfo prop = db.GetType().GetProperty(myClass);
Type classObject = prop.GetValue(db).GetType();
var classObjectMethod = classObject.GetMethods().Last(x=>x.Name=="Find");
var record = classObjectMethod.Invoke(classObject, new object[] { new object[] {"string"} });

Выдает «System.Reflection.TargetException:« Объект не соответствует типу цели. », И я не знаю почему.Как я могу сделать эту работу?

1 Ответ

1 голос
/ 03 апреля 2019

Метод, который вы используете, произошел от classObject, но: classObject имеет неправильное название - это на самом деле тип объекта (см .: .GetType()).Вы хотите экземпляр , а не тип;Итак:

PropertyInfo prop = db.GetType().GetProperty(myClass);
object classObject = prop.GetValue(db);
var classObjectMethod = classObject.GetType().GetMethods().Last(x=>x.Name=="Find");
var record = classObjectMethod.Invoke(classObject, new object[] { new object[] {"string"} });

Важным моментом здесь является то, что я переместил .GetType(), так что classObject остается целевым экземпляром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...