Unity の LifetimeManager

UnityContainer に型を登録するとき

container.RegisterType<IAnimal, Wankuma>(lifetimeManager);

という風に LifetimeManager も一緒に指定できます。UnityContainer を使って生成したインスタンスの生存期間は、一緒に登録した LifetimeManager が管理してます。

Unity が提供する LifetimeManager

表にしてみました。

種類 説明
ContainerControlledLifetimeManager LifetimeManagerが破棄されるときにインスタンスも破棄します。それまで1つのインスタンスを使い回します。
ExternallyControlledLifetimeManager インスタンスの管理に WeakReference を使用しています。
PerThreadLifetimeManager スレッド内で1つのインスタンスを使い回します。
TransientLifetimeManager 毎回新しいインスタンスを生成します。

例えば

毎回新しいインスタンスを生成して欲しい場合、TransientLifetimeManager を指定すればいいですね。