MEFでコンポジションスコープを制御する方法に興味があります。組成スコープを明示的かつ正確に制御する方法は?
最も明白な例 - Webアプリケーション。要求ごとにコンポーネントの特定のサブセットを作成し、要求が完了したら処分する必要があります。 しかし、スコープの一般的な実装は、他のコンテキストでも有効です。
私はMEF2プレビューを見て、それを理解しようとしていますが、何らかの理由で完全な解決策が見られません。
一方で、このMVC integration moduleがあります.MEFは私の要求範囲を十分に処理するのにはいいですが、それはMVCの外ではあまり使用できません。
一方、最初のプレビュー関連の投稿「What's new in MEF2」では、CompositionScopeDefinition
というスコープの明示的な仕様のようなものを見たことがありますが、それでスコープを "閉じる"。言い換えると、MEFはスコープ内で作成されたコンポーネントをいつ廃棄するかをどのように決定するのですか?
MEF v1を使って3番目の手(yep :-)にネストされたCompositionContainer
を作成してスコープ処理を行っていましたが、カスタムExportProvider
でうまく動作しません。私はその事を持っていた場合、私は簡単にそれの上にMVCの統合を構築することができますが、私はまた、他のコンテキストでそれを使用することができ
using(var scope = compositionContainer.OpenScope(/* some scope definition here */))
{
var rootComponent = scope.GetExport<MyRootComponent>(); // The component graph gets composed at this point
rootComponent.DoYourScopedThing();
} // The component graph gets disposed at this point
:本当に見たいのですがどのような
のようなものです。
もう一度疑問があります。そのようなスコープの問題に対処するにはどうすればよいですか?あるいは、MEFがまだ十分に成熟していないと言っていますか?