c# - 使用 Controller 依赖注入(inject)的具有多个存储库的主从 View

标签 c# asp.net-mvc dependency-injection ninject asp.net-mvc-3

我正在尝试使用 Ninject 将存储库注入(inject)到我的 MVC 项目的 Controller 中。

public class HomeController : Controller
    {
        private readonly ICustomerRepository _customerRepository;
        //
        // GET: /Home/
        public HomeController(ICustomerRepository customerRepository)
        {
            _customerRepository = customerRepository;
        }
     }

这一切都说得通而且很容易,但是当 View 变得更复杂并且需要显示主要细节场景时,我是否将两个存储库接口(interface)都注入(inject)其中?如果深度达到 4 或 5 层,情况会改变吗? (例如用户选择客户、项目、组、部门,然后得到人员列表)

我想到了三件事。

  1. 通过构造函数注入(inject)所有必要的存储库。
  2. 创建 super 存储库的概念,或者
  3. 为每个存储库创建部分 View 和 Controller 。

是否有我应该为此使用的模式的最佳实践?任何见解都会很棒。

最佳答案

选项 3 是最好的 - 选项 1 增加了 HomeController 的依赖项数量,随着数据源数量的增加,这将使其变得过于复杂。选项 2 会为您的“ super 存储库”带来类似的问题,因为它将需要大量方法来支持您系统中的所有查询。

为许多较小的表单分别创建一个 Controller 将使每个表单都相当简单并且更容易推理。

关于c# - 使用 Controller 依赖注入(inject)的具有多个存储库的主从 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412483/

相关文章:

java - Guice:将依赖项注入(inject)@provides提供者

c# - 在异步 BeginExecuteReader 中检测命令取消

C#继承。从基类派生类

c# - IList.Cast<typeof(T)>() 返回错误,语法看起来没问题

asp.net-mvc - asp.net mvc razor 将两项相乘并转换为字符串

java - 使用注释注入(inject)依赖项是否会消除依赖注入(inject)(外部配置)的主要好处?

c# - 编写 Switch 案例

asp.net-mvc - 在asp.net core 2中上传和读取excel文件

jquery - 在页面加载时保持树状菜单打开

java - 将系统作为依赖项处理