using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using TakeoutSaaS.Shared.Abstractions.Tenancy; namespace TakeoutSaaS.Module.Tenancy.Extensions; /// /// 多租户服务注册及中间件扩展。 /// public static class TenantServiceCollectionExtensions { /// /// 注册租户上下文、解析中间件及默认租户提供者。 /// public static IServiceCollection AddTenantResolution(this IServiceCollection services, IConfiguration configuration) { services.TryAddSingleton(); services.TryAddScoped(); services.TryAddScoped(); services.AddOptions() .Bind(configuration.GetSection("Tenancy")) .ValidateDataAnnotations(); return services; } /// /// 使用多租户解析中间件。 /// public static IApplicationBuilder UseTenantResolution(this IApplicationBuilder app) => app.UseMiddleware(); }