我正在学习 AutoFac。我喜欢模块的想法。根据我的理解,例如,我可以创建一个模块,将我的应用程序依赖项的某些部分注册到容器中,以在它之上创建一些抽象。但是,我真的不知道在我有多个模块的情况下该怎么做。
首先,我是否应该创建一个单独的 LoggerModule 来执行此操作:
builder.RegisterType<'MyLogger>().As<'ILogger>();
还是应该直接放在组合根中?这个问题来自我的困惑,如果在相同的组合根级别上注册模块(更高抽象)和服务(更低抽象)是一个好主意。是否应该只为使用许多依赖项的服务创建模块,以简化组合根级别的注册?
另一件事:我的其他注册需要 ILogger 的服务的模块呢?我应该假设 ILogger 已经注册并且只是 c.Resolve<'ILogger>() 还是应该再次注册它以便每个模块都注册了所有需要的依赖项?
我可以创建一个注册其他模块的模块吗?
我试图寻找这些问题的答案,但我只找到了接近的主题,但与我的问题无关。