绑定接口到类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>>();
}
这是因为在您创建绑定的类中,它不知道t
你要找的是绑定开放泛型。这可以使用如下命令来实现:
Bind(typeof(IGeneric<>)).To(typeof(Generic<>));
试一试,我想它应该可以工作(然而,它没有经过测试)。
在你的例子中,这意味着你的代码看起来像:
private void AddBindings()
{
ninjectKernel.Bind(typeof(IRepository<>)).To(typeof(EfRepository<>));
}