コード例 #1
0
 public IAbpStore BuildStore(string storeName, IAbpStoreOptions storeOptions)
 {
     return(BuildStoreInternal(
                storeName,
                storeOptions.ParseStoreOptions <TParsedOptions, TInstanceOptions, TStoreOptions, TScopedStoreOptions>(
                    Options)));
 }
コード例 #2
0
        public static TStoreOptions ParseStoreOptions <TParsedOptions, TInstanceOptions, TStoreOptions,
                                                       TScopedStoreOptions>(this IAbpStoreOptions storeOptions, TParsedOptions options)
            where TParsedOptions : class, IAbpParsedOptions <TInstanceOptions, TStoreOptions, TScopedStoreOptions>, new()
            where TInstanceOptions : class, IProviderInstanceOptions, new()
            where TStoreOptions : class, IAbpStoreOptions, new()
            where TScopedStoreOptions : class, TStoreOptions, IScopedStoreOptions
        {
            if (!(storeOptions is TStoreOptions parsedStoreOptions))
            {
                parsedStoreOptions = new TStoreOptions
                {
                    Name         = storeOptions.Name,
                    ProviderName = storeOptions.ProviderName,
                    ProviderType = storeOptions.ProviderType,
                    AccessLevel  = storeOptions.AccessLevel,
                    FolderName   = storeOptions.FolderName,
                };
            }

            parsedStoreOptions.Compute <TParsedOptions, TInstanceOptions, TStoreOptions, TScopedStoreOptions>(options);
            return(parsedStoreOptions);
        }
コード例 #3
0
        private IAbpStorageProvider GetProvider(IAbpStoreOptions configuration, bool throwIfNotFound = true)
        {
            string providerTypeName = null;

            if (!string.IsNullOrEmpty(configuration.ProviderType))
            {
                providerTypeName = configuration.ProviderType;
            }
            else if (!string.IsNullOrEmpty(configuration.ProviderName))
            {
                _options.ParsedProviderInstances.TryGetValue(configuration.ProviderName, out var providerInstanceOptions);
                if (providerInstanceOptions != null)
                {
                    providerTypeName = providerInstanceOptions.Type;
                }
                else if (throwIfNotFound)
                {
                    throw new BadProviderConfigurationException(configuration.ProviderName, "Unable to find it in the configuration.");
                }
            }
            else if (throwIfNotFound)
            {
                throw new BadStoreConfigurationException(configuration.Name, "You have to set either 'ProviderType' or 'ProviderName' on Store configuration.");
            }

            if (string.IsNullOrEmpty(providerTypeName))
            {
                return(null);
            }

            _storageProviders.TryGetValue(providerTypeName, out var provider);
            if (provider == null && throwIfNotFound)
            {
                throw new ProviderNotFoundException(providerTypeName);
            }

            return(provider);
        }
コード例 #4
0
 public IAbpStore GetStore(string storeName, IAbpStoreOptions configuration)
 {
     return(GetProvider(configuration).BuildStore(storeName, configuration));
 }