【发布时间】:2019-03-27 15:47:58
【问题描述】:
我想在 asp.net core 中创建作用域容器,并在我的单例方法的 2 种方法中使用它。
我已经尝试在每个 sigleton 方法中创建它。它有效,但我认为这是开销。
var scopeFactory = _serviceProvider.GetService<IServiceScopeFactory>();
var scope = scopeFactory.CreateScope();
var scopedContainer = scope.ServiceProvider;
当我需要它时,我会在每种方法中编写它。我认为这是逻辑错误。请解释一下如何正确执行?谢谢
【问题讨论】:
-
从技术上讲。错误很可能首先是您的服务是单例的。如果它需要使用范围服务,那么有一个强有力的论据认为它也应该是范围的。
-
这个错误很可能是你有很多方法需要这个逻辑。只有基础设施组件,你的Composition Root 的一部分应该需要这个,这将导致你需要创建一个新范围的少数(最多)地方。
标签: c# asp.net-core dependency-injection