将通用列表转换为继承的类

时间:2015-06-11 10:09:47

标签: c# linq generic-list

是否有可能将列表转换为继承列表的类?

实施例

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();

1 个答案:

答案 0 :(得分:2)

不,你不能在C#中贬低任何东西。 DogAnimal,但不是每Animal都是Dog

如果您希望能够将List<Foo>转换为FooCollection,则需要在后者中添加前者的隐式或显式转换。或者添加带有参数IEnumerable<Foo>的构造函数,并使用该参数调用base(IEnumerable<T> items)

无论如何,你不应该继承List<T>

无论如何尝试搜索,请参阅duplicate