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;
            }
        }
示例#2
0
 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");
 }
示例#6
0
 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())
 {
 }