Ninject无法创建对象。从内核获取时抛出异常

时间:2017-01-26 19:05:24

标签: c# asp.net .net ninject ninject.web.mvc

当我尝试使用IRepository<Tag>创建新的kernel.Get时,Ninject会抛出异常。我是否以正确的方式使用Ninject并正确设置了绑定?

课程NinjectDependencyResolver的方法:

private void AddBindings()
        {
            var mapperConfiguration = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new TagProfile());
            });
            var mapper = mapperConfiguration.CreateMapper();
            _kernel.Bind<BlogDbContext>().ToSelf().InRequestScope();
            _kernel.Bind<IRepository<Tag>, Repository<Tag>>();
            _kernel.Bind<IMapper>().ToConstant(mapper);

            var repository = _kernel.Get<IRepository<Tag>>(); // exception thrown here
            _kernel.Bind<ITagService, TagService>();
        }

班级Repository

`public class Repository<T> : IRepository<T> where T : class
{
    private readonly BlogDbContext _db;

    public Repository(BlogDbContext db)
    {
        _db = db;
    }
}`

P.S。即可。 我不知道这是否重要,但它的接口存储库位于同一个程序集中,Ninject在另一个程序集中注册。

1 个答案:

答案 0 :(得分:2)

您的绑定语法不正确。变化:

_kernel.Bind<IRepository<Tag>, Repository<Tag>>();

要:

_kernel.Bind<IRepository<Tag>>.To<Repository<Tag>>();