C# 施放集合时出现InvalidCastException<;T>;进入一个可观察的集合<;T>;通过反射

C# 施放集合时出现InvalidCastException<;T>;进入一个可观察的集合<;T>;通过反射,c#,reflection,windows-phone-8.1,C#,Reflection,Windows Phone 8.1,我可以将集合转换为可观察集合,如下所示: ObservableCollection<MyObject> col1; col1 = (ObservableCollection<MyObject>)new Collection<MyObject>(); “System.InvalidCastException”类型的第一次意外异常 在mscorlib.ni.dll中发生其他信息:对象必须 实现IConvertible 为什么转换在正常运行时工作,而在我使用反射时

我可以将
集合
转换为
可观察集合
,如下所示:

ObservableCollection<MyObject> col1;
col1 = (ObservableCollection<MyObject>)new Collection<MyObject>();
“System.InvalidCastException”类型的第一次意外异常 在mscorlib.ni.dll中发生其他信息:对象必须 实现IConvertible

为什么转换在正常运行时工作,而在我使用反射时不工作

编辑 我最终“解决”了我的问题,没有使用
集合
作为类型,而是直接使用my
myProperty.PropertyType
作为类型

我可以将
集合
转换为
可观察集合
类似 这:

observedcollection col1;
col1=(ObservableCollection)新集合();
不,你不能。。。此代码还抛出一个
InvalidCastException
集合
的实例不是
可观察集合
的实例,并且不存在从
集合
可观察集合
的转换。它的工作方式是另一种:
observedcollection
是一个
集合
,因为
observedcollection
继承自
集合

因此,它在反射中失败的原因与它在代码中失败的原因相同

我可以将
集合
转换为
可观察集合
类似 这:

observedcollection col1;
col1=(ObservableCollection)新集合();
不,你不能。。。此代码还抛出一个
InvalidCastException
集合
的实例不是
可观察集合
的实例,并且不存在从
集合
可观察集合
的转换。它的工作方式是另一种:
observedcollection
是一个
集合
,因为
observedcollection
继承自
集合


因此,它在反射中失败的原因与它在代码中失败的原因相同…

该死,这太尴尬了。我在没有强制转换的情况下出现了一个编译器错误,并且错误地认为它会强制转换得很好。该死,这太尴尬了。在没有强制转换的情况下,我遇到了一个编译器错误,并且错误地认为它会强制转换得很好。
myProperty.SetValue(
    element, 
    Convert.ChangeType(values, myProperty.PropertyType, null)
    , null);
ObservableCollection<MyObject> col1;
col1 = (ObservableCollection<MyObject>)new Collection<MyObject>();