namespace TakeoutSaaS.Shared.Abstractions.Tenancy; /// /// 租户上下文:封装当前请求解析得到的租户标识、编号及解析来源。 /// /// /// 初始化租户上下文。 /// /// 租户 ID /// 租户编码(可选) /// 解析来源 public sealed class TenantContext(long tenantId, string? tenantCode, string source) { /// /// 未解析到租户时的默认上下文。 /// public static TenantContext Empty { get; } = new(0, null, "unresolved"); /// /// 当前租户 ID,未解析时为 Guid.Empty。 /// public long TenantId { get; } = tenantId; /// /// 当前租户编码(例如子域名或业务编码),可为空。 /// public string? TenantCode { get; } = tenantCode; /// /// 租户解析来源(Header、Host、Token 等)。 /// public string Source { get; } = source; /// /// 是否已成功解析到租户。 /// public bool IsResolved => TenantId != 0; }