Unity を使用しているときに、コンテナーに明示的に登録していない具象型を注入しようとすると、Unity は現在の型を見つけようとし、それに依存するクラスに注入する前に新しい型をインスタンス化します。
このタイプのインスタンスが 1 つだけ使用されるようにするにはどうすればよいですか? 事前にコンテナにインスタンスを明示的に登録する必要がありますか?
Unity を使用しているときに、コンテナーに明示的に登録していない具象型を注入しようとすると、Unity は現在の型を見つけようとし、それに依存するクラスに注入する前に新しい型をインスタンス化します。
このタイプのインスタンスが 1 つだけ使用されるようにするにはどうすればよいですか? 事前にコンテナにインスタンスを明示的に登録する必要がありますか?
MSDNから:
Unity コンテナーを使用して、パブリック コンストラクターを持つ任意のオブジェクト (つまり、new 演算子を使用して作成できるオブジェクト) のインスタンスを生成できます。そのタイプのマッピングをコンテナーに登録する必要はありません。Resolve メソッドを呼び出して、登録されていない型の既定のインスタンスを指定すると、コンテナーは単にその型のコンストラクターを呼び出して結果を返します。
簡単に言えば、はい、アプリでシングルトンとして使用できるようにするには、タイプのマッピングを登録する必要があります。RegisterInstance
メソッドまたはを使用して、ライフタイム マネージャーとしてRegisterType
を提供することで実現できます。ContainerControlledLifetimeManager