C#、泛型列表和继承

标签 c# list generics inheritance

我有一个名为 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 ),否则生成 SaveT 上通用(列表项类型)。

关于C#、泛型列表和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5319530/

相关文章:

c# - Linq 语法 Any()

c# - 基于关联属性聚合的约束查询

c# - 采用 List<T>[] 的 Action 委托(delegate)的问题

java - 如何将参数传递给需要 Class< 的方法?扩展一些东西>?

java - 将通用类注释为 JSF 托管 bean

c# - CancellationTokenSource 无法与 Parallel.ForEach 一起正常工作

c# - Selenium2 Webdriver C# .Click() 列表 - 陈旧引用异常

python - 如何从字典键列表中提取特定项目

java - 按列迭代二维数据,在 Java 中处理和存储列标题

java - 具有泛型集合的 For 循环无法在 Java 7 中编译