приведение BindList <Classname>к BindingList <Interface> - PullRequest
2 голосов
/ 03 мая 2011

У меня есть объект (класс A), который реализует интерфейс I.

Мой объект C имеет список BindingListA

В какой-то момент мне нужно выполнить следующее приведение:

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

Но это не компилируется из-за ошибки приведения.

Как мне пойти и сделать это?

1 Ответ

3 голосов
/ 03 мая 2011

Это ковариация проблема.Он был адресован в .NET 4.0, но не для всех перечисляемых типов, и я не думаю, что он был адресован для BindingList .

. Я думаю, что ваш единственный вариант - создать новый экземпляр BindingList следующим образом:

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

Кроме того, вы можете объявить свое поле C.listA как BindingList и просто добавить в него экземпляры вашего класса.

...