从派生类到基类,似乎存在许多相反的问题,但我的问题是如何将基类型列表转换为派生类型列表?
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});
});
}
一定会有更好的办法...
您可以使用 Linq 方法OfType<MyDerived>()
, e.g.:
List<MyDerived> derivedCollection = baseCollection.OfType<MyDerived>().ToList();
它将删除所有不属于的项目MyDerived
虽然上课
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)