Probably a Unity beginner's question: when using Unity, would you still need to implement Dispose methods on the objects you have injected? Or is even this not needed (so, done automatically by Unity)? This is in the context of a web application.
25839 次
3 に答える
31
実装IDisposable
は Unity とは関係ありません。CLR でガベージ コレクションできないファイルなどのアンマネージ リソースを型が使用している場合は、インターフェイスを実装する必要があります。
Unity は、型とインスタンスの有効期間を管理できます。この場合、Unity はさまざまなタイプの LifeTimeManager を提供して、インスタンスのライフタイムを制御します。
Unity は、またはIDisposable
を使用して登録した場合にのみインターフェイスを尊重します。つまり、Unity-Container を破棄すると、上記の名前付き LifetimeManager によって登録されたインターフェイスを実装するすべてのインスタンスでも呼び出されます。ContainerControlledLifetimeManager
HierarchicalLifetimeManager
Dispose
IDisposable
IDisposable
を使用してインターフェースを実装するタイプを登録する場合TransientLifetimeManager
(コンテナで Resolve を呼び出すタイプごとに新しいインスタンスを取得します)、Dispose
インスタンスを呼び出すのはあなた次第です。
于 2012-11-27T10:15:27.780 に答える