这是对国际奥委会的正确实施

本文关键字:奥委会 | 更新日期: 2023-09-27 18:07:13

我正试图增加我的控制反转知识,并发现了一些我想知道的代码-这是真正的IoC吗?

    public class DepartmentLogic : IDepartmentLogic
    {
        private readonly IDepartmentRepository _departmentRepository;
        public DepartmentLogic(IDepartmentRepository repo)
        {
            _departmentRepository = repo;
        }
        public DepartmentLogic()
        {
            _departmentRepository = new DepartmentRepository(Constants.CONNECTION_STRING_NAME);
        }
    }

如果单元测试调用这个类,它将传入一个模拟的IDepartmentRepository。然而,所有主要的应用程序代码都使用带有默认构造函数的类,该构造函数随后会生成具体的DepartmentRepository。

正确吗?我想我读到过,你不应该在调用类中新建依赖类,就像在默认构造函数中发生的那样,并且新建具体的DepartmentRepository应该在创建这个类的类中发生。

这是对国际奥委会的正确实施

您提供了将依赖项注入到类中的能力。

当你说你的应用程序只是使用默认构造函数时,你是在说你并没有真正注入依赖项。还是硬编码的

你需要更进一步,提供一些机制在运行时"动态"创建依赖,然后将其注入到类中(通过依赖注入框架或其他自定义机制)。