Я пытаюсь решить довольно большую (для меня) проблему, с которой я столкнулся при написании своего приложения. Посмотрите на это, пожалуйста (я постараюсь сократить код для простоты):
У меня есть корневой интерфейс под названием IRepository
.
Далее IBookRepository: IRepository
Затем конкретный класс, который его реализует: BookRepository: IBookRepository
В классе RepositoryManager я объявил private IRepository
IRepoItem
- это интерфейс, который реализуется классом Book.
Теперь, когда я пытаюсь сделать что-то вроде этого:
currentRepo = new BookRepository();
VisualStudio выдает сообщение об ошибке:
Невозможно неявно преобразовать тип BookRepository в IRepository. Существует явное преобразование (вам не хватает приведений?)
Я попытался выполнить приведение явно, но возникло исключение во время выполнения ...
Я знаю (почти наверняка), что это нечто, называемое ковариацией, и это (вероятно, ) решена в .Net 4.0. К сожалению, я использую фреймворк версии 3.5 и не могу это изменить. Пожалуйста, дайте мне несколько советов, что делать - как решить эту проблему? Я хотел бы получить currentRepo от RepoFactory, который будет создавать несколько видов репозиториев в зависимости от потребностей пользователя. Не знаю, разрешены ли здесь ссылки, но я веду какой-то блог на http://olgatherer.wordpress.com/ , где описываю создание приложений. Мой английский не очень хорош, но я надеюсь, что этого достаточно, чтобы меня понять. Заранее благодарю за ответ.
С уважением, skrzeczowas