下面是一個例子://startup.cspublic void ConfigureServices(IServiceCollection services){ services.AddScoped<IMyScopedService, MyScopedService>(); services.AddScoped<AnotherScopedService , AnotherScopedService >(); var serviceProvider = services.BuildServiceProvider(); var serviceScopeFactory = serviceProvider.GetRequiredService<IServiceScopeFactory>(); IMyScopedService scopedOne; IMyScopedService scopedTwo; IMyScopedService scopedThree; IMyScopedService scopedFour; using (var scope = serviceScopeFactory.CreateScope()) { scopedOne = scope.ServiceProvider.GetService<IMyScopedService>(); scopedTwo = scope.ServiceProvider.GetService<IMyScopedService>(); } using (var scope = serviceScopeFactory.CreateScope()) { scopedThree = scope.ServiceProvider.GetService<IMyScopedService>(); } scopedFour = serviceProvider.GetService<IMyScopedService>(); AnotherScopedService.getSomething(app.ApplicationServices);}//AnotherScopedService .cspublic class AnotherScopedService { ... public static void getSomething(IServiceProvider serviceProvider) { IMyScopedService scopedFive = serviceProvider.GetRequiredService<IMyScopedService>(); ... }}我知道scopedOne和scopedTwo實際上是同一個對象,因為它們是在同一范圍內創建的,并且是與和scopedThree不同的對象。scopedOnescopedTwo以下是我的問題:Q1-在哪個范圍下scopedFour創建的?我沒有手動創建 的作用域scopedFour,那么scopedFourget 是通過ConfigureServices方法的作用域創建的嗎?Q2- 和 怎么樣scopedFour,scopedFive它們是在哪個范圍內創建的?
手動創建注冊服務的范圍
慕的地8271018
2023-09-24 16:20:07