UnityContainer に型を登録するとき
container.RegisterType<IAnimal, Wankuma>(lifetimeManager);
という風に LifetimeManager も一緒に指定できます。UnityContainer を使って生成したインスタンスの生存期間は、一緒に登録した LifetimeManager が管理してます。
Unity が提供する LifetimeManager
表にしてみました。
種類 | 説明 |
---|---|
ContainerControlledLifetimeManager | LifetimeManagerが破棄されるときにインスタンスも破棄します。それまで1つのインスタンスを使い回します。 |
ExternallyControlledLifetimeManager | インスタンスの管理に WeakReference を使用しています。 |
PerThreadLifetimeManager | スレッド内で1つのインスタンスを使い回します。 |
TransientLifetimeManager | 毎回新しいインスタンスを生成します。 |
例えば
毎回新しいインスタンスを生成して欲しい場合、TransientLifetimeManager を指定すればいいですね。