我試圖在編寫我的應用程序時遇到的相當大(對我而言)的問題。 請看看這個(我會盡量縮短代碼的簡單性):C中的接口繼承#
我有根接口叫IRepository<T>
。 接下來,IBookRepository : IRepository<Book>
接下來,具體的類實現它:BookRepository : IBookRepository
在RepositoryManager I類聲明private IRepository<IRepoItem> currentRepo;
IRepoItem
是由圖書類實現的接口。
現在,當我嘗試做這樣的事情:
currentRepo = new BookRepository();
VisualStudio中給出的錯誤信息:
無法隱式轉換類型 'BookRepository' 到 'IRepository'。一個顯式轉換存在(是否缺少強制轉換?)
我想明確地投,但運行時拋出異常......
我知道(幾乎是肯定的),這是一種叫做協方差這可能(可能)在.Net 4.0中解決。 不幸的是,我正在使用框架版本3.5,我不能改變這一點。請給我一些建議做什麼 - 如何超越這個問題?我想從RepoFactory獲取currentRepo,這會根據用戶需求生成幾種類型的存儲庫。我不知道鏈接是否被允許在這裏,但我寫了一些博客http://olgatherer.wordpress.com/,我描述了應用程序創建。我的英語不好,但我希望能夠理解我。預先感謝您的回答。
最好的問候, skrzeczowas
什麼是currentRepo聲明的類型? – 2010-10-06 13:35:11
沒關係,我看到它是一個IRepository。 –
2010-10-06 13:38:17