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 に答える