【发布时间】:2020-01-06 08:07:59
【问题描述】:
我正在配置 DI 容器,以便能够解析我的应用程序中的多个服务。
如果我使用 autofac,我会使用那里的模块在逻辑上捆绑注册。
ASP.NET 核心框架是否有模块的类似物?如果我愿意,我该如何实现?
Official doc on DI 说: 这是否意味着我不应该再寻找模块系统了? 如果我有 20-50 个服务,最好为每个单独的服务创建一个扩展?
【问题讨论】:
-
我认为它是说为相关服务组创建扩展方法,例如
AddMvc()添加一组与 MVC 相关的服务......我的意思是,它说,“......封装服务注册。” -
@HereticMonkey,感谢您提供的信息。可能我误解了那句话的意思。猜你是对的,我应该将相关服务隐藏在一个扩展名下。你能把它作为答案吗?
-
不,
Microsoft.Extensions.DependencyInjection是故意简单化的。但是,如果您想使用 Autofac,没有什么能阻止您。 docs.autofac.org/en/v4.0.0/integration/aspnetcore.html -
@ChrisPratt,感谢您提供的信息,它很有用。我不认为在一个应用程序中混合两个 DI 框架是一个好主意,特别是为了模块而添加 autofac,所以我想迁移核心框架的所有功能。
-
从技术上讲,它并没有使用两个 DI 框架。
Microsoft.Extensions.DependencyInjection充当具有默认和简单提供程序的外观。当你插入 Autofac 之类的东西时,它会作为提供者接管,而你所使用的只是外观层。
标签: c# asp.net-core dependency-injection