/// <summary> /// Initializes a new instance with the specified options configurations. /// </summary> /// <param name="configureOptions">The configuration actions to run.</param> /// <param name="postConfigures">The initialization actions to run.</param> public MultiTenantOptionsFactory(IEnumerable <IConfigureOptions <TOptions> > configureOptions, IEnumerable <IPostConfigureOptions <TOptions> > postConfigureOptions, IEnumerable <ITenantConfigureOptions <TOptions, TTenantInfo> > tenantConfigureOptions, IMultiTenantContextAccessor <TTenantInfo> multiTenantContextAccessor) { this.configureOptions = configureOptions; this.tenantConfigureOptions = tenantConfigureOptions; this.multiTenantContextAccessor = multiTenantContextAccessor; this.postConfigureOptions = postConfigureOptions; }
/// <summary> /// Initializes a new instance with the specified options configurations. /// </summary> /// <param name="setups">The configuration actions to run.</param> /// <param name="postConfigures">The initialization actions to run.</param> public MultiTenantOptionsFactory(IEnumerable <IConfigureOptions <TOptions> > setups, IEnumerable <IPostConfigureOptions <TOptions> > postConfigures, Action <TOptions, TenantInfo> tenantConfig, IMultiTenantContextAccessor multiTenantContextAccessor) { _setups = setups; this.tenantConfig = tenantConfig; this.multiTenantContextAccessor = multiTenantContextAccessor; _postConfigures = postConfigures; }
/// <summary> /// Initializes a new instance with the specified options configurations. /// </summary> public MultiTenantOptionsFactory(IEnumerable <IConfigureOptions <TOptions> > configureOptions, IEnumerable <IPostConfigureOptions <TOptions> > postConfigureOptions, IEnumerable <IValidateOptions <TOptions> > validations, IEnumerable <ITenantConfigureOptions <TOptions, TTenantInfo> > tenantConfigureOptions, IEnumerable <ITenantConfigureNamedOptions <TOptions, TTenantInfo> > tenantConfigureNamedOptions, IMultiTenantContextAccessor <TTenantInfo> multiTenantContextAccessor) { // The default DI container uses arrays under the covers. Take advantage of this knowledge // by checking for an array and enumerate over that, so we don't need to allocate an enumerator. // When it isn't already an array, convert it to one, but don't use System.Linq to avoid pulling Linq in to // small trimmed applications. _configureOptions = configureOptions as IConfigureOptions <TOptions>[] ?? new List <IConfigureOptions <TOptions> >(configureOptions).ToArray(); _postConfigureOptions = postConfigureOptions as IPostConfigureOptions <TOptions>[] ?? new List <IPostConfigureOptions <TOptions> >(postConfigureOptions).ToArray(); _validations = validations as IValidateOptions <TOptions>[] ?? new List <IValidateOptions <TOptions> >(validations).ToArray(); _tenantConfigureOptions = tenantConfigureOptions as ITenantConfigureOptions <TOptions, TTenantInfo>[] ?? new List <ITenantConfigureOptions <TOptions, TTenantInfo> >(tenantConfigureOptions).ToArray(); _tenantConfigureNamedOptions = tenantConfigureNamedOptions as ITenantConfigureNamedOptions <TOptions, TTenantInfo>[] ?? new List <ITenantConfigureNamedOptions <TOptions, TTenantInfo> >(tenantConfigureNamedOptions).ToArray(); _multiTenantContextAccessor = multiTenantContextAccessor; }
public MultiTenantOptionsCache(IMultiTenantContextAccessor multiTenantContextAccessor) { this.multiTenantContextAccessor = multiTenantContextAccessor ?? throw new ArgumentNullException(nameof(multiTenantContextAccessor)); }