如何在.NET Core中使用默认依赖注入从父级创建子作用域?
发布时间:2020-12-13 20:10:53 所属栏目:百科 来源:网络整理
导读:我正在构建一个控制台.NET Core应用程序.它会定期运行一个可以完成某些工作的方法.如何使ServiceProvider的行为与ASP.NET Core应用程序中的行为相同.我希望它在方法开始执行时解析作用域服务,并在方法结束时处理已解析的服务. // pseudocodeglobalProvider.A
我正在构建一个控制台.NET Core应用程序.它会定期运行一个可以完成某些工作的方法.如何使ServiceProvider的行为与ASP.NET Core应用程序中的行为相同.我希望它在方法开始执行时解析作用域服务,并在方法结束时处理已解析的服务.
// pseudocode globalProvider.AddScoped<ExampleService>(); // ... using (var scopedProvider = globalProvider.CreateChildScope()) { var exampleService = scopedProvider.Resolve<ExampleService>(); }
参考
Microsoft.Extensions.DependencyInjection包并创建范围:
var services = new ServiceCollection(); services.AddScoped<ExampleService>(); var globalProvider = services.BuildServiceProvider(); using (var scope = globalProvider.CreateScope()) { var localScoped = scope.ServiceProvider.GetService<ExampleService>(); var globalScoped = globalProvider.GetService<ExampleService>(); } 您也可以轻松测试它: using (var scope = globalProvider.CreateScope()) { var localScopedV1 = scope.ServiceProvider.GetService<ExampleService>(); var localScopedV2 = scope.ServiceProvider.GetService<ExampleService>(); Assert.Equal(localScopedV1,localScopedV2); var globalScoped = globalProvider.GetService<ExampleService>(); Assert.NotEqual(localScopedV1,globalScoped); Assert.NotEqual(localScopedV2,globalScoped); } 文件:Service Lifetimes and Registration Options. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |