【发布时间】:2012-06-06 02:23:48
【问题描述】:
我有一个抽象父类,子类从它继承。我有另一个类,其中包含许多不同子类的 List<> 类型。然后,我在另一个类中有一个方法,它采用List<ParentType> 的参数,并且只调用声明为抽象的方法。
我在子类列表中使用 List<T>.Cast<T2> 时遇到问题。我收到了错误:
System.Linq.Enumerable.Cast(System.Collections.IEnumerable)' 是一个“方法”,在给定的上下文中无效
有人知道如何解决这个错误吗?还是我必须重构List<ParentType> 类型的列表并单独重铸每个项目?
我正在尝试做的事情: 公共抽象类 P { 公共整数; 公共抽象双 addSections(); }
public class A : P {
public int num2;
public A(int r, int n) {
num = r;
num2 = n;
}
public double addSections() { return (double)num + (double)num2; }
}
public class B : P {
public double g;
public B(int r, double k) {
num = r;
g = k;
}
public double addSections() { return (double)num + g; }
}
public class MyClass {
public MyClass() {
List<A> listA;
List<B> listB;
//...
helper(listA.Cast<P>()); //doesn't work
helper(listB.Cast<P>().ToList()); //doesn't work either
}
public void helper(List<P> list) {
//...
}
}
【问题讨论】:
-
你应该发布给你这个错误的代码。
-
@Paul - 确实如此。没有上下文,我们无法为您提供太多帮助。