使用基类列表时,对象与目标类型异常不匹配

时间:2014-03-24 23:24:06

标签: c# inheritance reflection

我有三个类,设置如下。我想从基类中为基类型列表中的所有子类获取属性 values 的数组。

public abstract class Base
{
  ...   
}

public class A : Base
{
  ...
}

public class B : Base
{
  ...
}

所以我的代码看起来像list1<Base>是一个包含AB类型元素的列表:

List<PropertyInfo> props = new List<PropertyInfo>();
foreach(property in typeOf(Base).GetProperties())
{
   props.add(property)
}

foreach (var ele in list1)
{
   var propsArray = props.Select(prop => prop.GetValue(ele, null)).ToArray();
   ...
}

它遇到的第一个项目没有问题,无论是A还是B,但如果它是相反的类型则第二个问题。

这是堆栈跟踪。

System.Reflection.TargetException: Object does not match target type.
 at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
 at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr,    Binder binder, Object[] parameters, CultureInfo culture)
 at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder   binder, Object[] parameters, CultureInfo culture)
 at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
 at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)

非常感谢任何帮助!

0 个答案:

没有答案