我正在尝试使用 Ninject 重用 NopCommerce 代码进行数据访问。我的问题:如何将未指定的泛型类型注入对象?我知道 NopCommerce 使用 Autofac。
我的对象描述:我有控制器(MyController
),它拥有存储库(IRepository<T>
)。EfRepository<T>
使用 ninject 命令注入此存储库: kernel.Bind(typeof(IRepository<>)).To(typeof(EfRepository<>))
. EfRepository
持有 typeof ,这IDbContext
是通用的DbContext
。
EfRepository
不会将其泛型类型传递给IDbContext
,但仍将其注入。使用 Ninject 是如何完成的?
编码;
public class MyController : Controller
{
//a repository --> injected as EfRepository<> using generic injection using the command:
//kernel.Bind(typeof(IRepository<>)).To(typeof(EfRepository<>));
private readonly IRepository<Account> _repository;
}
public class EfRepository<T> : IRepository<T> where T : BaseEntity
{
private IDbContext _context; //<<== How do I inject <T> to IDbcontext?
}
public interface IDbContext
{
IDbSet<T> Set<T>() where T : BaseEntity;
}