我试图在编写我的应用程序时遇到的相当大(对我而言)的问题。 请看看这个(我会尽量缩短代码的简单性):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