我如何获得属性(property)?当前Ambiguous match found
发生错误,请参见代码中的注释行。
public class MyBaseEntity
{
public MyBaseEntity MyEntity { get; set; }
}
public class MyDerivedEntity : MyBaseEntity
{
public new MyDerivedEntity MyEntity { get; set; }
}
private static void Main(string[] args)
{
MyDerivedEntity myDE = new MyDerivedEntity();
PropertyInfo propInfoSrcObj = myDE.GetType().GetProperty("MyEntity");
//-- ERROR: Ambiguous match found
}
最佳答案
Type.GetProperty
如果运行以下命令
var properties = myDE.GetType().GetProperties().Where(p => p.Name == "MyEntity");
您将看到返回了两个PropertyInfo
对象。一种用于MyBaseEntity
,另一种用于MyDerivedEntity
。这就是为什么您收到“模糊匹配找到”错误的原因。您可以像这样获得
PropertyInfo
的MyDerivedEntity
:PropertyInfo propInfoSrcObj = myDE.GetType().GetProperties().Single(p =>
p.Name == "MyEntity" && p.PropertyType == typeof(MyDerivedEntity));
关于c# - GetProperty反射在新属性上导致 “Ambiguous match found”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11443707/