Munqは何も処理しません。この機能が必要な場合は、Autofacなどの別のIoCコンテナを使用する方がよいでしょう。
しかし、多くの場合、コンテナにオブジェクトを廃棄させるための本当の必要性は疑問です。あなたのIUnitOfWork
にはCommit()
メソッドがあり、これはおそらくアプリケーションで呼び出されるため、作業ユニットは良い例です。 Commit
を呼び出すクラスは、IUnitOfWork
の存続期間の責任を負う可能性が高く、コミットを呼び出すための責任もあります。
あなたはIUnitOfWork
を注入するが、IUnitOfWorkFactory
を注入ないによってこの問題を解決することができます。
using (IUnitOfWork unit = this.uowFactory.CreateNew())
{
// Do some useful stuff.
unit.Commit();
}
UPDATE 2012年12月:作業単位を必要とするクラスがより次の操作を行うことができます
をWorkインスタンスの単位を登録する方法についての私の意見は(部分的に)に起因して変更されました新しい洞察と私がアプリケーションを設計する方法。工場に注射する代わりに、私は現在IUnitOfWork
を直接注入したいと思っています。これは、定義されたスコープ(Webリクエストなど)が終了した時点で作業ユニットを廃棄すると良いことを意味します。 @DaRKoN_が説明したように、Munq 3.14以降、RequestLifetimeはインスタンスを破棄します。
このStackoverflow question and answerは、工場に注入するのではなく、作業単位を直接注入する時期と方法について完全に説明しています。
Munq 3.14以降:「HttpRequestの最後にRequestLifetimeでIDisposableオブジェクトを破棄する」 – ChadT