繁体   English   中英

在未知的DbSet上调用方法“ Find”将引发:“对象与目标不匹配。”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM