using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; namespace QYZH.InteractiveMagazine.Infrastructure.Context { /// /// 应用程序上下文 /// public static class ServiceContext { public static IServiceProvider ServiceProvider; public static void UseServiceContext(this IApplicationBuilder applicationBuilder) { ServiceProvider = applicationBuilder.ApplicationServices; } public static void UseServiceContext(this IServiceCollection services) { ServiceProvider = services.BuildServiceProvider(); } /// /// 获取对象实例 /// /// /// public static T GetService() { return ServiceProvider.GetService(); } /// /// 获取Scope对象实例 /// /// /// public static T GetScopeService() { var scope = ServiceProvider.CreateScope(); return scope.ServiceProvider.GetService(); } /// /// 获取对象实例 /// /// /// public static T GetRequiredService() { return ServiceProvider.GetRequiredService(); } /// /// 获取对象实例 /// /// /// public static T GetOptionsMonitor() { return ServiceProvider.GetService>().CurrentValue; } /// /// 获取对象实例 /// /// /// public static T GetOptions() where T : class, new() { return ServiceProvider.GetService>().Value; } } }