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 に答える