Модель Ninject и Provider с конструктором без параметров - PullRequest
3 голосов
/ 01 мая 2011

Я реализую пользовательский 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);

    }
}

1 Ответ

1 голос
/ 01 мая 2011

Вы не можете ввести что-то жестко закодированное.Сожалею.Никакая структура DI не поддерживает это.В вашем конструкторе вы жестко закодировали экземпляр, так что это больше не инверсия управления.Чтобы выполнить инверсию управления, вы должны определить свои слои как можно слабосвязанными:

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

Теперь перейдите к настройке структуры DI.

...