私はWindsorコンテナがIoCのために使用される新しいプロジェクトを持っています。詳細にこれらの行を理解するためにWindsorコンテナ。 ASP.NET MVCアプリケーションのオブジェクトの寿命
ここでは単純化されたコードは、私は公式documenationで見つかった
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly().BasedOn<BaseController>().LifestyleTransient(),
Component.For<ISecurityManager>().ImplementedBy<SecurityManager>(),
Component.For<IAccountManager>().ImplementedBy<AccountManager>()
........)
}
情報をインストールして実行では十分ではありません。
Classes.FromThisAssembly().BasedOn<BaseController>().LifestyleTransient(),
Registerメソッドでこの行はBaseControllerから継承されている自分のアプリケーション内のすべてのクラスに依存性の注入を可能にします。
BaseControllerが含まれています。
注射は、上記以外のクラスには行われません。
すべてのコントローラクラスの有効期間がインスタンスになることをコンテナに示します。
Component.For<ISecurityManager>().ImplementedBy<SecurityManager>()
上記のすべてのコントローラに、コンストラクタインターフェイスがある場合、ISecurityManagerはSecurityManagerクラスのインスタンスに挿入されます。
このSecurityManagerのライフタイムは、デフォルト値としてシングルトンです。アプリケーションの起動後、アプリケーションの実行が終了するまで、すべてのコントローラに対して1つのSecurityManagerインスタンスしか持ちません。
私の考えは正しいですか?それは少なくとも、コントローラのLifestyleTransient()が私に奇妙に思えるし、注射されたオブジェクトもシングルトンになるからだ。下から上へ