public IServiceProvider ConfigureServices(IServiceCollection services) { try { using (ServiceProvider provider = methods.ConfigureServicesDelegate(services) as ServiceProvider) { IOptionsMonitor <MultitenancyOptions <TTenant> > optionsMonitor = provider.GetRequiredService <IOptionsMonitor <MultitenancyOptions <TTenant> > >(); IMultitenancyOptionsProvider <TTenant> multitenancyProvider = provider.GetRequiredService <IMultitenancyOptionsProvider <TTenant> >(); services.AddScoped <IServiceFactoryForMultitenancy <TTenant> >(_ => { return(new ServiceFactoryForMultitenancy <TTenant>(services.Clone(), methods.ConfigurePerTenantServicesDelegate, additionnalServicesTenant, multitenancyProvider, optionsMonitor)); }); } IServiceProvider serviceProvider = methods.ConfigureServicesDelegate(services); return(serviceProvider); } catch (Exception ex) { if (ex is TargetInvocationException) { ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); } throw; } }
public AppTenantResolver( IMultitenancyOptionsProvider <AppTenant> multitenancyOptionsProvider, IMemoryCache cache, ILog <AppTenantResolver> logger) : base(multitenancyOptionsProvider, cache, logger) { this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public TestTenantMemoryCacheResolver( IMultitenancyOptionsProvider <TestTenant> optionsProvider, IMemoryCache cache, ILog <TestTenantMemoryCacheResolver> logger, int cacheExpirationInSeconds = 10) : this(optionsProvider, cache, logger, new MemoryCacheTenantResolverOptions(), cacheExpirationInSeconds) { }
public TestTenantMemoryCacheResolver( IMultitenancyOptionsProvider <TestTenant> optionsProvider, IMemoryCache cache, ILog log, MemoryCacheTenantResolverOptions options, int cacheExpirationInSeconds = 10) : base(optionsProvider, cache, log, options) { this.cacheExpirationInSeconds = cacheExpirationInSeconds; }
public MemoryCacheTenantResolver( IMultitenancyOptionsProvider <TTenant> multitenancyOptionsProvider, IMemoryCache cache, Logging.LibLog.ILog log, MemoryCacheTenantResolverOptions options) { this.log = log ?? throw new ArgumentNullException($"Argument {nameof(log)} must not be null"); this.cache = cache ?? throw new ArgumentNullException($"Argument {nameof(cache)} must not be null"); this.options = options ?? throw new ArgumentNullException($"Argument {nameof(options)} must not be null"); this.multitenancyOptionsProvider = multitenancyOptionsProvider ?? throw new ArgumentNullException($"Argument {nameof(multitenancyOptionsProvider)} must not be null"); }
public ServiceFactoryForMultitenancy( IServiceCollection services, Action <IServiceCollection, TTenant> configurePerTenantServicesDelegate, Func <IServiceCollection, TTenant, IConfiguration, ILogProvider> additionnalServicesTenant, IMultitenancyOptionsProvider <TTenant> multitenancyProvider, IOptionsMonitor <MultitenancyOptions <TTenant> > optionsMonitor) : this() { OptionsMonitor = optionsMonitor ?? throw new ArgumentNullException($"Argument {nameof(optionsMonitor)} must not be null"); Services = services ?? throw new ArgumentNullException($"Argument {nameof(services)} must not be null"); MultitenancyOptionsProvider = multitenancyProvider ?? throw new ArgumentNullException($"Argument {nameof(multitenancyProvider)} must not be null"); ConfigurePerTenantServicesDelegate = configurePerTenantServicesDelegate ?? throw new ArgumentNullException($"Argument {nameof(configurePerTenantServicesDelegate)} must not be null"); AdditionnalServicesTenant = additionnalServicesTenant ?? throw new ArgumentNullException($"Argument {nameof(additionnalServicesTenant)} must not be null"); }
public MemoryCacheTenantResolver(IMultitenancyOptionsProvider <TTenant> multitenancyOptionsProvider, IMemoryCache cache, Logging.LibLog.ILog log) : this(multitenancyOptionsProvider, cache, log, new MemoryCacheTenantResolverOptions()) { }