3

LightInject を使用して、複数のコンストラクター パラメーターで登録したいサービスがあるとします。例:

container.Register<double, bool, string, IFoo<String>>(
    (factory, arg1, arg2, arg3) => new Foo<String>(arg1, arg2, arg3));

登録時に ILifetime インスタンスを指定する方法を理解するのに苦労しています。簡単な登録を使用すると、次のように簡単な登録に ILifetime を設定できます。

container.Register<IFoo, Foo>(new PerRequestLifeTime());

ファクトリを使用するすべての Register メソッドは、一時的なオブジェクトを想定しているようです。

パラメータ用に別のインターフェイスを作成して登録することもできますが、コンストラクタで複数のパラメータを使用するインスタンスごとに新しいものを作成したくありません。

では、ファクトリーとライフタイムにサービスを登録するにはどうすればよいでしょうか?

私は IoC/DI にやや慣れていないことを認めます。これは、このタスクを適切に達成する方法を誤解していることが原因である可能性があります。これを行う別の方法もあると確信しています。

4

2 に答える 2

5

私は LightInject の作成者であり、サービス リクエスト中に実際に inn 引数を渡す場合、一時的なライフタイム以外の他のライフタイムでは意味をなさないと言えます。

解決時の引数を必要とするサービスを作成したので、おそらくサービスの新しいインスタンスが必要になるでしょう。

解決時の引数を必要としないサービスの場合、ファクトリ デリゲートと目的の有効期間を組み合わせて実行できます。

お役に立てれば

よろしくお願いします

ベルンハルト・リヒター

于 2014-04-04T20:48:24.913 に答える