0

Autofacで見つけられなかった可能性が1つあります。カスタムライフタイムマネージャー。たとえば、Windsor.Castleでは、から派生したカスタムライフタイムマネージャーを作成できますAbstractLifestyleManager

public class MyCustomLifestyleManager : AbstractLifestyleManager
{
 public overrid object Resolve(CreationContext context)
 {
 ...
 }

}

autofacでそれを行う方法を知っている人はいますか?私は標準的な生涯マネージャーについて知っていますが、質問は自分で作成することは可能ですか?

4

3 に答える 3

1

カスタムのライフタイムスコープを使用したいと思います。これについては、Autofacのブログ投稿を参照してください。

Autofacは、ライフタイムスコープを通じて作業単位に対応します。ライフタイムスコープ(ILifetimeScope)は、まさにそのように聞こえます。スコープが完了すると、関連するコンポーネントのセットのライフタイムが終了します。

作業単位の処理中に解決されるコンポーネントインスタンスは、ライフタイムスコープに関連付けられます。インスタンス化の順序を追跡し、依存関係が同じまたはより長寿命のライフタイムスコープ内のコンポーネントによってのみ満たされるようにすることで、Autofacはライフタイムスコープが終了したときに廃棄の責任を負うことができます。

この質問はサンプルコードを提供します。

于 2012-12-18T19:33:44.320 に答える
0

Webアプリケーションを使用していない限り、独自のカスタムライフスタイルを実装する簡単な方法はありません。Webアプリにはライフタイムスコーププロバイダー(通常はリクエストスコープに使用されます)がありますが、他のアプリにはありません。

お気づきのとおり、作成に基づいてオブジェクトでカスタム処理を行う方法は、OnActivatedまたはOnActivatingイベントを使用することです。廃棄時に独自のカスタムロジックを実行できるOnReleaseもあります。ただし、メカニズムを構文的に見栄えよくするために独自の拡張機能を実装するのはあなた次第です。

デリゲート式(ラムダ)を依存関係として登録することもできるので、そこでかなり凝ったことを行うことができます。

これらすべてのことの間で、あなたはあなたがやろうとしていることを成し遂げることができるはずです。

于 2012-12-19T15:06:57.253 に答える
0

RequestLifetimeScopeProviderILifetimeScopeProviderなどを実装したい。

于 2012-12-18T20:06:35.417 に答える