我是 DI 和 IoC 模式的新手。我正在从事一个新项目,并希望最大限度地松耦合我的对象。我的类(class)分为解决方案中的几个项目。所以我下载了 NInject 并在某处读到我应该在应用程序启动时创建绑定(bind)(Main 函数或 Global.asax)。我不明白的一件事是,在那种情况下,我将不得不引用那些包含类的程序集来创建绑定(bind),这意味着类与我在其中创建绑定(bind)的对象耦合。是对的吗?这是否意味着使用 MEF 是更好的主意?任何人都可以解释 IoC 是如何工作的以及为什么使用它是个好主意? 谢谢
最佳答案
控制反转并不是没有对程序集的引用,它更多的是在您的逻辑和相关服务之间创建契约。它通过在使用服务时抽象出服务的具体实例来促进可测试性和可重用性。
例如,这允许您传入一个不同的数据服务,该服务会将您的数据保存到内存表而不是数据库中,这意味着您不会在单元测试期间将数据保存到数据库中。执行工作的函数不关心传入的内容,因为无论传递什么,它都实现了一个通用接口(interface),您可以根据该接口(interface)执行函数,并合理假设它们会起作用。
有很多很好的资源可用于了解有关 IOC/DI 模式的更多信息。这是一对夫妇:
关于c# - 关于 DI 和 IoC 容器的一个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5570065/