我正在使用 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,但这违背了目的,并且服务定位器是已知的反模式。
如何在不放弃 IoC 好处的情况下避免传递这么多参数?