3

我正在实现一个自定义 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);

    }
}
4

1 回答 1

1

你不能注入硬编码的东西。对不起。没有 DI 框架支持这一点。在您的构造函数中,您已经对实例进行了硬编码,因此这不再是控制反转。为了执行控制反转,您需要将层定义为尽可能松散耦合:

public class EFRoleProvider: RoleProvider
{
    private readonly IContextFactory _contextFactory;
    public EFRoleProvider(IContextFactory contextFactory)
    {
        _contextFactory = contextFactory;
    }
}

现在继续配置您的 DI 框架。

于 2011-05-01T19:21:28.987 回答