私は、NinjectがIoCコンテナとして使われるプロジェクトを持っています。私の関心は、クラスの多くは、コンストラクタのような種類があるということです。レイジー依存性注入
[Inject]
public HomeController(
UserManager userManager, RoleManager roleManager, BlahblahManager blahblahManager) {
_userManager = userManager;
_roleManager = roleManager;
_blahblahManager = blahblahManager;
}
私は一度にこれらのクラスのすべてのインスタンスを持ってしたくない場合は?
ところで、このすべてのクラスがLazy<T>
でラップされ、コンストラクタに渡されたときの方法は、私が必要とするものではありません。 T
インスタンスはまだ作成されていませんが、Lazy<T>
インスタンスはすでにメモリに保存されています。
私の同僚は、Factoryパターンを使用してすべてのインスタンス化を制御することを提案していますが、IoCにこのような優れた設計バグがあるかどうかはわかりません。
このような状況の回避策がありますか、またはIoCの設計に大きな欠点がありますか?多分私は別のIoCコンテナを使うべきでしょうか?
提案がありますか?
実際にあなたの問題は何ですか?なぜあなたはこれらのインスタンスを望んでいないのですか? –
コントローラの作業中にUserManagerが必要な場合がありますが、RoleManagerは必要なく、その逆もあります。 Lazyインスタンスについて話しているなら、これをメモリに入れるのは大したことではありませんが、これが唯一の方法ですか? –
xwrs
なぜ 'UserManager'と' RoleManager'にとって大したことですか?あなたのコンストラクタはとにかく重い作業をすべきではありません。 –