Exemplo n.º 1
0
        /// <summary>
        /// LoadEmbedded
        /// </summary>
        /// <param name="type"></param>
        /// <param name="configFile"></param>
        /// <param name="sourceType"></param>
        /// <param name="isEmbedded"></param>
        /// <returns></returns>
        public static IConfiguration Load(Type type, string configFile, MetaSourceType sourceType, bool isEmbedded = false)
        {
            if (Configurations.TryGetValue(configFile, out var con))
            {
                return(con);
            }

            if (!isEmbedded && !File.Exists(configFile))
            {
                return(null);
            }


            using (var stream = isEmbedded?GetEmbeddedFileStream(type, configFile):File.OpenRead(configFile))
            {
                if (sourceType.Equals(MetaSourceType.Auto))
                {
                    if (configFile.ToLower().EndsWith(".json"))
                    {
                        var provider = new EmbeddedConfigurationProvider <JsonConfigurationSource>(stream);
                        var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                            provider
                        });
                        Configurations.TryAdd(configFile, config);
                        return(config);
                    }
                    else
                    {
                        var provider = new EmbeddedConfigurationProvider <XmlConfigurationSource>(stream);
                        var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                            provider
                        });
                        Configurations.TryAdd(configFile, config);
                        return(config);
                    }
                }
                else if (sourceType.Equals(MetaSourceType.JSON))
                {
                    var provider = new EmbeddedConfigurationProvider <JsonConfigurationSource>(stream);
                    var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                        provider
                    });
                    Configurations.TryAdd(configFile, config);
                    return(config);
                }
                else
                {
                    var provider = new EmbeddedConfigurationProvider <XmlConfigurationSource>(stream);
                    var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                        provider
                    });
                    Configurations.TryAdd(configFile, config);
                    return(config);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// LoadEmbedded
        /// </summary>
        /// <param name="type"></param>
        /// <param name="configFile"></param>
        /// <param name="sourceType"></param>
        /// <param name="isEmbedded"></param>
        /// <param name="isReload"></param>
        /// <returns></returns>
        public static IConfiguration Load(Type type, string configFile, MetaSourceType sourceType, bool isEmbedded = false, bool isReload = true)
        {
            if (Configurations.TryGetValue(configFile, out var con))
            {
                return(con);
            }

            if (!isEmbedded && !File.Exists(configFile))
            {
                return(null);
            }


            if (isEmbedded || !isReload)
            {
                using (var stream = isEmbedded? GetEmbeddedFileStream(type, configFile):File.OpenRead(configFile))
                {
                    if (sourceType.Equals(MetaSourceType.Auto))
                    {
                        if (configFile.ToLower().EndsWith(".json"))
                        {
                            //采用Json
                            var provider = new EmbeddedConfigurationProvider <JsonConfigurationSource>(stream);
                            var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                                provider
                            });
                            Configurations.TryAdd(configFile, config);
                            return(config);
                        }
                        else if (configFile.ToLower().EndsWith(".xml"))
                        {
                            var provider = new EmbeddedConfigurationProvider <XmlConfigurationSource>(stream);
                            var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                                provider
                            });
                            Configurations.TryAdd(configFile, config);
                            return(config);
                        }
                        else
                        {
                            throw new NotSupportedException($"source file can not parse $`{configFile}`");
                        }
                    }
                    else if (sourceType.Equals(MetaSourceType.JSON))
                    {
                        var provider = new EmbeddedConfigurationProvider <JsonConfigurationSource>(stream);
                        var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                            provider
                        });
                        Configurations.TryAdd(configFile, config);
                        return(config);
                    }
                    else
                    {
                        var provider = new EmbeddedConfigurationProvider <XmlConfigurationSource>(stream);
                        var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                            provider
                        });
                        Configurations.TryAdd(configFile, config);
                        return(config);
                    }
                }
            }


            if (sourceType.Equals(MetaSourceType.Auto))
            {
                if (configFile.ToLower().EndsWith(".json"))
                {
                    //采用Json
                    var provider = new EmbeddedConfigurationProvider <JsonConfigurationSource>(configFile);
                    var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                        provider
                    });
                    Configurations.TryAdd(configFile, config);
                    return(config);
                }
                else if (configFile.ToLower().EndsWith(".xml"))
                {
                    var provider = new EmbeddedConfigurationProvider <XmlConfigurationSource>(configFile);
                    var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                        provider
                    });
                    Configurations.TryAdd(configFile, config);
                    return(config);
                }
                else
                {
                    throw new NotSupportedException($"source file can not parse $`{configFile}`");
                }
            }
            else if (sourceType.Equals(MetaSourceType.JSON))
            {
                var provider = new EmbeddedConfigurationProvider <JsonConfigurationSource>(configFile);
                var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                    provider
                });
                Configurations.TryAdd(configFile, config);
                return(config);
            }
            else
            {
                var provider = new EmbeddedConfigurationProvider <XmlConfigurationSource>(configFile);
                var config   = new ConfigurationRoot(new List <IConfigurationProvider> {
                    provider
                });
                Configurations.TryAdd(configFile, config);
                return(config);
            }
        }