Files
StoreWeb/Core/MAX.Framework/Interfaces/ModuleContext.cs
T
2026-09-18 19:17:11 +08:00

47 lines
1.6 KiB
C#

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