使用ILIST实现接口转换

4
我有一个类型为ILIST <ITopics>的X字段。
我正在尝试做这件事:
Object.X= AListOfSometypeThatInheretsITopics;

如何将列表正确地转换为Object.X?
3个回答

8
这需要使用泛型变异,但很遗憾,IList<T>无法实现它,因为它表达了一个可变列表接口。您最好使用非泛型的IList或泛型的IEnumerable<T>(自C# 4以来支持变异),作为字段/属性类型,或通过机制进行转换。
x = inputList.OfType<ITopics>().ToList();

获取适当口味的列表。

2

尝试

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

0

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

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

这会给你一个IEnumerable<T>而不是IList<T>。 - Jeffrey Hantin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接