绑定接口到类Ninject的问题

本文关键字:问题 Ninject 接口 绑定 | 更新日期: 2023-09-27 18:11:03

有一个接口:

public interface IRepository<T>
    where T : Entity
{
    T Add(T entity);
    T Delete(int id);
    T Get(int id);
    T Update(T entity);
    IQueryable<T> Items { get; }
}

和类:

public class EfRepository<T> : IRepository<T> where T : Entity

然而,我在绑定它们时遇到了问题,所以这里是绑定代码,它一直突出显示

private void AddBindings()
    {
        ninjectKernel.Bind<IRepository<T>>().To<EfRepository<T>>();
    }

绑定接口到类Ninject的问题

这是因为在您创建绑定的类中,它不知道t

你要找的是绑定开放泛型。这可以使用如下命令来实现:

Bind(typeof(IGeneric<>)).To(typeof(Generic<>));

试一试,我想它应该可以工作(然而,它没有经过测试)。

在你的例子中,这意味着你的代码看起来像:

private void AddBindings()
{
    ninjectKernel.Bind(typeof(IRepository<>)).To(typeof(EfRepository<>));
}