【发布时间】:2011-03-16 00:07:42
【问题描述】:
我有一个名为 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);
显然这行不通。有没有避免创建中间列表的巧妙方法?
谢谢,安迪
【问题讨论】:
-
“B 是 A 的孩子”是什么意思?在您给出的代码清单中,A 和 B 是类型参数。
-
“孩子”是什么意思?你的意思是“派生类”吗?
-
好的,但在您的示例中,A 和 B 是 Foo 和 Bar 类型定义中使用的类型参数。这很令人困惑。
-
好的。考虑 A = 形状和 B = 圆形。我想将一个圆圈列表加载到一个形状列表中,并保存一个我知道都是圆圈的形状列表。 Circle 派生自 Shape。
标签: c# list generics inheritance