我正在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)