2

我有一个实现接口 I 的对象(A 类)。

我的对象 C 有一个 BindingList listA

在某一时刻,我需要执行以下演员:

BindingList<I> funcName(){
   ...
   return (BindingList<I>) C.listA;
}

但这由于转换错误而无法编译。

我应该怎么去做?

4

1 回答 1

3

这是一个协方差问题。它已在 .NET 4.0 中得到解决,但并非针对所有可枚举类型,而且我不认为它已针对 BindingList<T> 得到解决。

我认为您唯一的选择是创建一个新的 BindingList 实例,如下所示:

BindingList<I> funcName(){
   ...
   return new BindingList<I>(C.listA);
}

或者,您可以将您的 C.listA 字段声明为 BindingList<I> 并将您的类的实例添加到其中。

于 2011-05-02T20:36:32.190 回答