我是Unity / Dependency Injection概念的新手。
我的理解是你使用DI来避免紧密耦合的类结构,但我很难看到它的好处。
我在此链接http://www.refactorthis.net/post/2012/10/25/Dependency-Injection-and-Inversion-of-Control-Ioc-With-the-Microsoft-Unity-Container.aspx上跟随“Unity容器”部分,但我不知道为什么这是“更好” - 它引入了更多代码,但仍然在LoggingModule.cs中我仍然需要这个代码行:
_iocContainer.RegisterType(typeof(ILogger), typeof(DBLogger));
意味着仍然存在依赖关系,但我刚刚把它移到一个隐蔽的位置。我仍然要告诉Unity我想要使用哪个类
这个问题可能会被标记为非建设性的,但我希望被告知其正确性以及如何正确使用Unity / DI。
谢谢, 安德鲁
答案 0 :(得分:1)
好处是您的服务现在依赖于抽象(ILogger
),抽象的解析是容器的责任。此外,您的依赖项的声明以及使用的具体结构和它们的生命周期集中在Composition Root(您在容器中注册依赖项的位置)。
我建议你阅读一本关于依赖注入的好书,其中有几本。