【发布时间】:2013-03-07 23:01:35
【问题描述】:
从派生类到基类似乎有很多问题,但我的问题是如何将基类型列表转换为派生类型列表?
public class MyBase {
public int A;
}
public class MyDerived : MyBase {
public int B;
}
public void MyMethod() {
List<MyBase> baseCollection = GetBaseCollection();
List<MyDerived> derivedCollection = (List<MyDerived>)baseCollection; // Which doesn't work
}
我最终得到的解决方案不是很优雅。
public class MyBase {
public int A;
}
public class MyDerived {
public int B;
public MyBase BASE;
}
public void MyMethod() {
List<MyBase> baseCollection = GetBaseCollection();
List<MyDerived> derivedCollection = new List<MyDerived>();
baseCollection.ForEach(x=>{
derivedCollection.Add(new derivedCollection(){ BASE = x});
});
}
一定有更好的办法……
【问题讨论】:
-
那不是派生类。
-
不能简单地将 List
转换为 List ,因为 List 可能包含大象或兔子,而这些是来自 List [i] 的非法返回值。 -
感谢您的解释,我发现这很困难的全部原因是我对 MY CODE 的假设,即 baseCollection 只包含 MyBase 对象。