2

MVC アプリケーションで LightInject の使用を開始していますが、DB コンテキスト クラスのインスタンスを実装する方法について少し混乱しています。

コンストラクターを介して注入できることはわかっています...しかし、これを行う必要がある場合、LightInjectのポイントは何ですか。

また、アプリケーションの DB コンテキスト クラスは既にインターフェイス (IdentityDbContext) を実装しているため、リポジトリ用に別のインターフェイスを作成するのは適切ではないようです。

DB Context クラスには、コンストラクターにこれがあります。

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

だから私は非常に簡単に呼び出すことができます:

 _context.Create()

コンストラクターでは-しかし、私の理解では、これはSOLIDの原則に反します。

では、LightInject を使用してデータベース コンテキスト クラスのインスタンスを作成するにはどうすればよいでしょうか。

4

1 に答える 1

2

コンテキストを登録してから、コンストラクター インジェクションで渡すことができます。

あなたのioc構成ファイルでは:

container.Register<Context, Context>(new PerScopeLifetime());

いくつかのサービス:

private readonly Context _context;

public BookService(Context context)
{
    _context = context;
}

インターフェイスを使用する場合は、インターフェイスを登録して、必要な場所に渡します。

于 2014-12-23T13:30:21.513 に答える