我认为,如果您使用具体的类创建一个测试用例,您将发现实际上您不能隐式地从
XmlPagesRepository
到
IContentRepository<Page>
. 很难理解,但如果这种转换是可能的,那么我认为使用
ToMethod
:
Bind<IContentRepository<Page>>().ToMethod(x => (IContentRepository<Page>)kernel.Get<XmlPagesRepository>());
编辑:再看看这个,转换是不可能的。
XmlRepository<Page>
工具
IContentRepository<BaseContentObject>
不
. 页面是BaseContentObject并不重要,强制转换是不可能的。这不是你想要的。
public interface IPageRepository : IContentRepository<Page>
{
}
public interface XmlPageRepository : IPageRepository
{
// implementation
}
现在可以有多个IPageRepository实现,并使用Ninject绑定相应的实现:
Bind<IPageRepository>().To<XmlPageRepository>();