一个模块的依赖性

问题描述 投票:1回答:1

我正在学习AutoFac。我喜欢模块的想法。从我的理解,我可能例如创建注册我的应用程序依赖的某些部分的容器来创建它上面的一些抽象的模块。不过,我真的不知道在那里我有多个模块的情况下做的。

  1. 第一件事情是,我应该创建一个单独的记录器模块只是这样做: builder.RegisterType < 'ILogger>()是Asp。<' ILogger>();

还是应在成分根drectly放?这个问题来自于我的困惑,如果是对组成根同级别注册模块(更高的抽象)和服务(下抽象)一个好主意。如果模块仅适用于使用很多依赖,使该组合物根级别注册简单服务产生的呢?

  1. 另一件事:我的那个注册需要ILogger服务等模块是什么?如果我只是认为ILogger已经注册,只是c.Resolve <'ILogger>()或者我应该重新注册,使每个模块都有注册的所有所需的依赖?
  2. 我可以创建注册其他模块的模块?

我试图寻找这些问题的答案,但我发现只有很接近,但不是真正的我的问题的话题。

c# dependency-injection autofac autofac-module
1个回答
2
投票

模块看作车辆的配置,而不是作为应用程序的组件。它们的存在设置与您的应用程序将取决于组件的容器。考虑到这一点:

  1. 当然。没有理由为什么一个模块不应该为一个单一的目的(如配置容器中的记录)存在。通常情况下,然而,日志记录,它的通常是“内置”的应用程序的根(或壳)这样的基本服务。
  2. 其他组件应该只是假设日志记录可用,它是别人的责任进行配置。这是依赖注入的本质 - 如果需要的服务不可用您的应用程序无法运行。
  3. 这在技术上是可行的,但我不会去做。试想模块作为独立的,不直接依赖于对方。这有可能在复杂的应用程序中的模块在启动时加载的顺序很重要,但我认为一个实现细节,不应该影响到建筑的抽象。
© www.soinside.com 2019 - 2024. All rights reserved.