是否有可能将列表转换为继承列表的类?
例子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#中向下转换任何东西。Dog
是Animal
,但不是每个Animal
都是Dog
。
如果您希望能够将List<Foo>
强制转换为FooCollection
,则需要在后者中添加从前者的隐式或显式转换。或者添加一个带参数IEnumerable<Foo>
的构造函数,并使用该参数调用base(IEnumerable<T> items)
。
你不应该继承List<T>
。
无论如何,尝试搜索,见duplicate。