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