Ninject配置 - 泛型

时间:2011-01-09 23:37:23

标签: ninject

我有一组基本存储库,设置如下......

Bind<IRepository<SomeObject>>().To<SomeObjectRepository>().WithConstructorArgument("connection", connection);
Bind<IRepository<SomeOtherObject>>().To<SomeOtherObjectRepository>().WithConstructorArgument("connection", connection);
//and so on

这些存储库很简单 - 全班同样如此。

public class SomeObjectRepository : Repository<SomeObject>
{
    public SomeObjectRepository (string connection) : base(connection)
    {
    }
}

所以我想,嘿,这有点愚蠢,所以我创建了一个通用的基础知识库,用这个替换了所有这些绑定。

Bind(typeof(IRepository<>)).To(typeof(Repository<>)).WithConstructorArgument("connection", connection);

当然打破了并且遇到了错误

  

激活错误   IRepository {SomeObject}使用绑定   从IRepository {T}到Repository {T}   没有可用于创建的构造函数   实现的一个实例   类型。

为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

稍晚但您需要将IRepository绑定到SomeObjectRepository。