使用ILIST构建接口

时间:2009-04-22 19:57:45

标签: c# interface

我有ILIST <ITopics>

类型的字段X.

我正在尝试这样做:

Object.X= AListOfSometypeThatInheretsITopics;

如何将列表正确地转换为Object.X?

3 个答案:

答案 0 :(得分:8)

这需要generic variance,遗憾的是IList<T>无法使用{{3}},因为它表达了一个可变列表界面。您最好的选择是使用非通用IList或通用IEnumerable<T>(适用于C#4的差异)作为字段/属性类型,或者通过诸如

x = inputList.OfType<ITopics>().ToList();

获取适当风味的清单。

答案 1 :(得分:2)

尝试

object.x = IList<ITopics>.ofType<ITopics>().ToList()

答案 2 :(得分:0)

您可以使用IEnumerable<T>扩展方法Cast

Object.X = yourList.Cast<ITopics>().ToList();