将泛型列表强制转换为继承的类

本文关键字:继承 转换 泛型 列表 | 更新日期: 2023-09-27 17:55:06

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

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

将泛型列表强制转换为继承的类

不,你不能在c#中向下转换任何东西。DogAnimal,但不是每个Animal都是Dog

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

你不应该继承List<T>

无论如何,尝试搜索,见duplicate。