在IEnumerable

时间:2016-02-08 01:25:52

标签: c# .net reflection mono

我正在Mono中创建一个Binding解决方案,使开发人员能够进行双向绑定。除了IEnumerable之外,所有属性类型都有效,因为出于某些原因,当我尝试使用InvalidCastException时,Mono会抛出PropertyInfo.GetValue()

即使PropertyInfo显示Collection<> / IEnumerable<>正确找到其类型的所有迹象(即,如果我调试,它表明传入的属性派生出一个Collection。 ..但是无法提取实际值?

以下是代码:

var src = Source.GetType().GetProperty("Foo");
if (typeof (IEnumerable).IsAssignableFrom(SourceProperty.PropertyType))
{
    var obj = src.GetValue(Source, null);
}

我得到的错误:

  

InvalidCastException:无法从源类型转换为目标类型。

     

System.Reflection.MonoProperty.GetterAdapterFrame [VMController,Array](System.Reflection.Getter`2 getter,System.Object obj)(at / Users / builduser / buildslave / mono-runtime-and-classlibs / build / mcs /class/corlib/System.Reflection/MonoProperty.cs:234)   System.Reflection.MonoProperty.GetValue(System.Object obj,System.Object [] index)(at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoProperty的.cs:292)

0 个答案:

没有答案