处理无效的类型转换-IList到List <Type>

时间:2019-09-08 20:42:53

标签: c# reflection

我正在使用C#4.0,并且在反射和转换方面存在问题。我已经阅读了StackOverflow上的一些线程,到目前为止,我没有尝试过提供适合我的解决方案。

问题:我有一个Character类,它是从另一个类GenericDataObjectWithUniqueID派生的。我有一个字符列表(例如,键入List),我想通过反射将它们显示为

List<GenericDataObjectWithUniqueID>. 

到目前为止,我使用以下内容:

(IList)p.GetValue(context, null);

这将使我得到有问题的列表,没问题,但是作为IList。正如我所说,我想要的是List。

所以我尝试了这个:

(List<GenericDataObjectWithUniqueID>)p.GetValue(context, null);

现在,出于测试目的,我知道该列表是Characters(列表(字符)),而Character是从GenericDataObjectWithUniqueID派生的。

当我在上面的行中运行时,我得到以下信息:

无法转换类型为'System.Collections.Generic.List 1[GameSystem.DataModel.Character]' to type 'System.Collections.Generic.List 1 [WPF_MVVM_GenericBaseDLL.Data_Objects.GenericDataObjectWithUniqueID]'的对象。

我已经疯了,因为我检查了大约十次。字符来自GenericDataObjectWithUniqueID。

我也尝试过:

IList propertyList = (IList)p.GetValue(context, null);
List<GenericDataObjectWithUniqueID> newList = new List<GenericDataObjectWithUniqueID>(propertyList);

这告诉我“参数1:无法从'System.Collections.IList'转换为'System.Collections.Generic.IEnumerable'”

我也尝试过:

IList propertyList = (IList)p.GetValue(context, null);
List<GenericDataObjectWithUniqueID> newList = propertyList as List<GenericDataObjectWithUniqueID>;

我在这里没有收到错误,但是'newList'为空。

这些是this thread的建议,但到目前为止还没有运气。

我希望我只是缺少一些简单的东西。而且请,不,我不能只是继续使用IList。我也尝试过,但是我还有其他代码需要使用

List<GenericDataObjectWithUniqueID>.

0 个答案:

没有答案