47 lines
1.6 KiB
C#
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; }
|
|
}
|
|
}
|