![](/img/trans.png)
[英]PropertyInfo.GetValue() Throws: Object does not match target type
[英]Invoking method “Find” on unknown DbSet throws: “Object does not match target.”
我想在未知的DbSet上运行方法“查找”。 并找到一条名为“ string”的记录。 我这样做:
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:'对象与目标类型不匹配。'”,我也不知道为什么。 我该如何进行这项工作?
您使用的方法来自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
仍然是目标实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.