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;
}
}
}