C# 使用控制器依赖项注入的具有多个存储库的主详细信息视图
我正试图使用Ninject将存储库注入我的MVC项目的控制器中C# 使用控制器依赖项注入的具有多个存储库的主详细信息视图,c#,asp.net-mvc,dependency-injection,ninject,asp.net-mvc-3,C#,Asp.net Mvc,Dependency Injection,Ninject,Asp.net Mvc 3,我正试图使用Ninject将存储库注入我的MVC项目的控制器中 public class HomeController : Controller { private readonly ICustomerRepository _customerRepository; // // GET: /Home/ public HomeController(ICustomerRepository customerRepository)
public class HomeController : Controller
{
private readonly ICustomerRepository _customerRepository;
//
// GET: /Home/
public HomeController(ICustomerRepository customerRepository)
{
_customerRepository = customerRepository;
}
}
这一切都很有意义,也很简单,但是当视图变得更复杂并且需要显示主细节场景时,我是否将这两个存储库接口都注入其中?如果深度达到4或5级,这种情况会改变吗?(例如,用户选择客户、项目、组、部门,然后获得人员列表)
我想到了三件事
对于我应该使用的模式,是否有最佳实践?任何洞察都很好。选项3是最好的-选项1增加了
HomeController
的依赖项数量,这将随着数据源数量的增加而变得过于复杂。选项2为“超级存储库”创建了一个类似的问题,因为它需要大量的方法来支持系统中的所有查询
为许多较小的表单分别创建一个控制器将使每个表单变得相当简单且更易于推理。我一直在学习如何将控制器视为所有表单的控制器。如果您采用这种方法,那么我认为让它了解多个存储库/服务是完全好的
主存储库方法工作得很好,控制器端所需的实例化更少,但它对您所做的事情没有那么明确,并且使控制器更多地依赖于存储库/服务的内部知识。我可以看到这一点……但让我们面对它,控制器中的2个依赖项并不是“太多”。