使用ninject,我想为MyRepository
类创建一个提供程序,该提供程序依赖于ApplicationDbContext
:
public class MyRepository<TEntity>
where TEntity : MyEntity
{
private ApplicationDbContext _dbContext;
public MyRepository(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
// ...
}
我看过this document,它解释了如何创建提供者,但我不确定:
ApplicationDbConext
参数传递给提供者这是我的尝试:
public class MyRepositoryProvider : Provider<MyRepository>
{
protected override MyRepository CreateInstance(IContext context)
{
// how to create a generic instance of type T?
MyRepository myRepository = new MyRepository<T>(/*need ApplicationDbContext*/);
return myRepository;
}
}
如果无法使用提供程序来实现,那么任何人都可以演示如何使用Factory interface来做到这一点吗?
这可能是XY problem,您真正需要的是为存储库注册一个开放的通用名称