【问题标题】:How to cast list of descendant objects to list of parent objects without creating new list? [duplicate]如何在不创建新列表的情况下将后代对象列表转换为父对象列表? [复制]
【发布时间】:2012-02-15 10:49:11
【问题描述】:

可能重复:
Casting a generic collection to base type

我有一个 A 类和一个从 A 类继承的 B 类。

在另一个类中,我有一个列表,我想将它作为一个列表返回,但不创建一个新列表,因为我想使用一个可观察的集合并且需要两个列表相同。

有什么想法吗?谢谢。

【问题讨论】:

  • 你不能;列表是不变的,即使在 4.0 中也是如此。 IEnumerable<...> 接口虽然支持方差 - 但这将为您提供完整的可观察功能。

标签: c# .net list inheritance


【解决方案1】:

将其设为IEnumerable<> 而不是List<>?那么你的属性就可以返回BaseCollectionName.Select(a => (B)a),而且你其实不用再新建一个List了?

否则,在不创建新的List<> 对象的情况下,没有简单的方法将List<A> 转换为List<B>

【讨论】:

  • 你的回答为什么会有这么多问题?
  • 可能是因为我提议进行更深入的架构更改(并可能做出一些假设),并且出于某种原因,它们可能与 OP 的目标不符...
猜你喜欢
  • 1970-01-01
  • 2011-09-07
  • 2013-12-02
  • 1970-01-01
  • 2015-03-17
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多