【发布时间】:2013-09-27 00:02:53
【问题描述】:
假设我有以下课程:
public class BaseClass {
...
}
public class ChildClass : BaseClass {
...
}
如果我想在方法调用中将 ChildClass 的单个实例作为类型 BaseClass 传递,我可以这样做。
public void SomeCall(BaseClass baseClass)
....
ChildClass childClass = new ChildClass();
SomeCall(childClass); <-- Works fine
但是,如果我想传入一个列表,我似乎无法正确地转换它。
public void SomeCall(List<BaseClass> baseClasses)
....
List<ChildClass> childClasses = new List<ChildClass>();
SomeCall(childClasses); <-- Gets compiler error
我得到的错误是
Argument 1: cannot convert from 'System.Collections.Generic.List<ChildClass>'
to 'System.Collections.Generic.List<BaseClass>'
有没有办法将列表中的值转换为基类的类型?
现在,我想我只需要使用 foreach 并将列表中的每个对象自动映射到 BaseClass 的新列表。
【问题讨论】:
-
我认为 Enumerable.Cast: msdn.microsoft.com/en-us/library/… 是你要找的。span>
-
可能重复:stackoverflow.com/questions/16966961/… - Eric Lippert 对此提供了很好的答案:stackoverflow.com/a/16967217/700926
-
试试
SomeCall(childClasses.Cast<BaseClass>().ToList());。应该这样做。 -
你的标题与你的问题相反