我正在学习AutoFac。 我喜欢模块的想法。以我的理解,例如,我可以创建一个模块,将我的应用程序依赖关系的某些部分注册到容器中,以在其之上创建一些抽象。但是,我真的不知道在有多个模块的情况下该怎么办。
首先是,我应该创建一个单独的LoggerModule来做到这一点:
builder.RegisterType <'MyLogger>()。As <'ILogger>();
还是应该将其直接放在合成根目录中?问题来自于我的困惑,如果在同一个组合根目录上注册模块(较高抽象度)和服务(较低抽象度)是否是一个好主意。 是否应该仅为使用许多依赖项的服务创建模块,以使注册在组合根级别更简单?
另一件事:注册需要ILogger的服务的其他模块如何?我应该只是假设已经注册了ILogger,而只是c.Resolve <'ILogger>(),还是应该再次注册它,以便每个模块都注册了所有需要的依赖项?
我可以创建一个注册其他模块的模块吗?
我试图寻找这些问题的答案,但我只发现了一些很接近的话题,而并非真正关于我的问题。
答案 0 :(得分:2)
将模块视为配置工具,而不是应用程序组件。它们用于设置应用程序将依赖的组件的容器。考虑到这一点: