【发布时间】:2012-09-12 12:21:22
【问题描述】:
我已经搜索过这个问题,但没有运气。我们开始吧。
假设我有一个接口:
interface IQueryRepository<T> where T : class
我想绑定任何请求:
IQueryRepository<IClient>
到:
ConcreteQueryRepository<Client>
我已经尝试了显而易见的方法:
Bind<IGenericQueryRepository<IClient>>().To<ConcreteQueryRepository<Client>>()
但我得到一个错误:
ConcreteQueryRepository<Client>不能用作类型参数“TImplementation” 泛型类型或方法“Ninject.Syntax.IBindingToSyntax<T>.To<TImplementation>()” 'ConcreteQueryRepository<Client>' 没有隐式引用转换 到'IGenericQueryRepository<IClient>'
但我不明白为什么,因为 GenericQueryRepository 实现了 IGenericQueryRepository 而 Client 实现了 IClient。
我希望 Ninject 给我一个具体的通用存储库,其中 T 是客户端。我希望避免在代码中使用具体类型。
可以吗?
【问题讨论】:
标签: c#-4.0 generics interface ninject-2