私はMVC3を使用しており、IoCを実装して、コンストラクター引数を介してコントローラーにサービス/マネージャーオブジェクトを提供しています。これらは順番に、モデルに渡される可能性があります。
私が抱えている問題は、これらのオブジェクトをあちこちに渡すのが面倒になる可能性があることです。
例:
public CartController(
ICartManager cartManager,
IProductManager productManager,
IUpsellManager upsellManager,
IAccountManager accountManager,
... more ...)
{
... store to class variables ...
}
public ActionResult Index()
{
...
CartModel model = new CartModel(
cartManager,
accountManager,
upsellManager,
productManager,
... );
return View(model);
}
また、カートモデルには、パラメーターを渡す必要のあるサブモデルが含まれている場合があります。ご覧のとおり、すべてが非常に面倒になります。コンストラクター引数が非常に多い場合は準備ができています。コントローラーの処理が多すぎる可能性がありますが、これは複雑なページであり、サイトには他の多くの複雑なページが含まれます。そんなに多くのものを渡す必要はありませんが、どうすればそれらを渡してコントロールを維持できないのですか?
モデルでDependencyResolverを使用したいのですが、それでは目的が果たせず、ServiceLocatorはアンチパターンとして知られています。
IoCの利点を放棄せずに、どうすればこれほど多くの議論を渡さないようにできますか?