using MAX.Core.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace MAX.Framework.Interfaces
{
///
/// 模块上下文:模块在「服务注册阶段」能拿到的全部宿主信息。
/// 之所以包成一个对象,是为了以后要再补宿主的其他东西(日志、配置节、HostApplicationBuilder 等)时不用改接口签名。
///
public sealed class ModuleContext
{
public ModuleContext(
IServiceCollection services,
IServiceRegistrar registrar,
IConfiguration configuration,
IHostEnvironment? environment = null)
{
Services = services;
Registrar = registrar;
Configuration = configuration;
Environment = environment;
}
///
/// 服务集合(Microsoft.Extensions.DependencyInjection),等价于宿主里的 builder.Services
///
public IServiceCollection Services { get; }
///
/// 容器无关的注册器,等价于 里拿到的那个,便于以后换容器
///
public IServiceRegistrar Registrar { get; }
///
/// 应用配置,等价于宿主的 builder.Configuration(永不为 null;走旧的无参入口时是空配置)
///
public IConfiguration Configuration { get; }
///
/// 宿主环境,等价于宿主的 builder.Environment;走旧的无参入口时为 null
///
public IHostEnvironment? Environment { get; }
}
}