我有一个名为 Foo 的类,它定义了一个类型 A 的对象列表:
class Foo {
List<A> Items = new List<A>();
}
我有一个名为 Bar 的类,它可以保存和加载 B 类型对象的列表:
class Bar {
void Save(List<B> ComplexItems);
List<B> Load();
}
B 是 A 的子类。Foo、Bar、A 和 B 在库中,用户可以创建任何类的子类。
我想做的是类似下面的事情:
Foo MyFoo = new Foo();
Bar MyBar = new Bar();
MyFoo.Items = MyBar.Load();
MyBar.Save(MyFoo.Items);
显然这行不通。有没有避免创建中间列表的聪明方法?
谢谢,安迪
最佳答案
使用 .NET 4.0 和 IEnumerable<T>
而不是 List<T>
( http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx ),否则生成 Save
在 T
上通用(列表项类型)。
关于C#、泛型列表和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5319530/