8

ティアダウンの一部として、Unity にプロパティが注入されたオブジェクトを破棄させる方法はありますか?

背景は、ASP.NET MVC 2、Unity、および WCF を使用するアプリケーションに取り組んでいることです。Unity を使用してコントローラーをインスタンス化する独自の MVC コントローラー ファクトリを作成し、コントローラーのパブリック プロパティの [Dependency] 属性を使用して WCF プロキシを挿入します。ページのライフ サイクルの最後に、コントローラー ファクトリの ReleaseController メソッドが呼び出され、IUnityContainer.Teardown(theMvcController) が呼び出されます。その時点で、コントローラーは期待どおりに破棄されますが、注入された wcf プロキシも破棄する必要があります。(実際には、Dispose ではなく Close や Abort を呼び出す必要がありますが、それは後の問題です。)

もちろん、コントローラーの Dispose メソッドをオーバーライドして、そこにあるプロキシをクリーンアップすることもできますが、コントローラーに、注入されたインターフェイスのライフサイクルや、WCF プロキシを参照していることさえ知らなくて済むようにしたくありません。

このために自分でコードを書く必要がある場合、最適な拡張ポイントは何でしょうか? ポインタをいただければ幸いです。

4

3 に答える 3

2

TearDown でコンテナーによって作成されたインスタンスの破棄を処理する Unity 拡張機能を作成しました。

http://www.neovolve.com/2010/06/18/unity-extension-for-disposing-build-trees-on-teardown/を参照してください。

于 2010-06-18T03:48:23.167 に答える
0

可能な回避策は、破棄時に (インスタンスを破棄するときに Unity によって呼び出される) プロキシの Close メソッドを呼び出すプロキシの周りにラッパーを作成することです。それはあなたにとって実行可能なシナリオですか?

于 2011-11-17T09:26:52.550 に答える