我正在实现一个自定义的RoleProvider,并希望使用Ninject但是我遇到了无参数构造函数问题。关于如何为此注入的任何想法?
public class EFRoleProvider:RoleProvider
{
private readonly IRepository _repository;
// I want to INJECT this GOO here!
public EFRoleProvider()
{
IContextFactory contextFactory = new DbContextFactory<myEntities>();
_repository = new RepositoryBase(contextFactory);
}
}
答案 0 :(得分:1)
你不能注入硬编码的东西。抱歉。没有DI框架支持这一点。在您的构造函数中,您已经对实例进行了硬编码,因此不再反转控制。为了执行控制反转,您需要将图层定义为松散耦合:
public class EFRoleProvider: RoleProvider
{
private readonly IContextFactory _contextFactory;
public EFRoleProvider(IContextFactory contextFactory)
{
_contextFactory = contextFactory;
}
}
现在继续配置您的DI框架。