カスタム スコープ アクセサー(単に DefaultLifetimeScope を返す) を作成して、カスタム スコープ ライフスタイルを追加できるようにしました。コンポーネントは次のように登録されます。
Component
.For<..>
.LifestyleScoped<CustomScope>()
しかし、新しい CustomScope スコープ/ライフタイムを実際に開始する方法については途方に暮れています。ドキュメントは、を使用して新しいスコープを開始することを示しています
using (Container.BeginScope()) {
// ..
}
しかし、私の目標は、一般的な登録ではなく、特定のスコープを作成/開始/開始することです。LifestyleScoped()
新しいスコープは、CustomScope に明示的に登録されたコンポーネントにのみ影響する必要があります。一般的なスコープのコンポーネントまたは他のスコープのライフスタイルに対して登録されたコンポーネントではありません。
(マイ カスタム スコープ) スコープ/有効期間を開始するプロセスは何ですか?
関連するドキュメントにリンクしてください。なかなか見つからなかったので質問です。コードは Castle Windsor 3.3 を使用しています。
バックグラウンド:
私は Autofac から来ており、EF コンテキストで UoW を確立するために、 Instance Per Matching Lifetime Scopeに相当するものを探しています。「リクエストごとに」複数のUoWが存在する可能性があり、リポジトリごとに異なるUoWが存在する可能性があります-将来的にはネストのサポートも希望します。
UoW パターンの作成について話している記事は数多くありますが、[すべて] HTTP や WFC リクエストなどのコンテキストに関連付けられています (誤って IMOHO)。これは、この質問の対象ではありません。私は特に、コール グラフを流れて using ブロックの「内部に存在する」カスタム スコープを開始する方法に関心があります。
ノート:
(BoundTo()
およびLifestyleBoundTo()
/ LifestyleBoundToNearest()
) ライフスタイルはオブジェクト グラフに反して機能し (タイプを変更する必要があります)、そのようなものに切り替えることは厳密にはこの質問に対する解決策/回答ではありません。しかし、彼らのために良いケースを作ることができれば..