是否有可能将列表转换为继承列表的类?
实施例
public class FooCollection : List<Foo>
{
}
List<Foo> oFooList = new List<Foo>();
FooCollection oColl = (FooCollecton)oFooList;
我希望最后一行能够奏效,但事实并非如此。
PS:我将使用它来转换linq结果来转换继承的集合。任何帮助表示赞赏。
FooCollection oColl = (FooCollecton)oDBClass.Where(x=> x.Id == 1).ToList();
答案 0 :(得分:2)
不,你不能在C#中贬低任何东西。 Dog
是Animal
,但不是每Animal
都是Dog
。
如果您希望能够将List<Foo>
转换为FooCollection
,则需要在后者中添加前者的隐式或显式转换。或者添加带有参数IEnumerable<Foo>
的构造函数,并使用该参数调用base(IEnumerable<T> items)
。
无论如何,你不应该继承List<T>
。
无论如何尝试搜索,请参阅duplicate。