ASP.NET Core-カスタム構成ソースケース

5248 ワード

コンフィギュレーション関連オブジェクト:コンフィギュレーション、コンフィギュレーションビルダー、コンフィギュレーションソース、コンフィギュレーションプロバイダー.コンフィギュレーションオブジェクトは構成情報を担持している.ConfigurationProviderは、情報の元のデータソースを構成するプロバイダです.両者のコミュニケーションは、ConfigurationBuilderによって行われ、ConfigurationProviderによってソースデータが抽出され、Configurationオブジェクトに変換されます.


public class PropertiesConfigurationSource : IConfigurationSource
        {
            public string Path { get; set; }
            public PropertiesConfigurationSource(string path)
            {
                this.Path = path;
            }
            public IConfigurationProvider Build(IConfigurationBuilder builder)
            {
                return new PropertiesConfigurationProvider(this.Path);
            }
        }
        public class PropertiesConfigurationProvider : ConfigurationProvider
        {
            public string Path { get; set; }
            public PropertiesConfigurationProvider(string path)
            {
                this.Path = path;
            }

            public override void Load()
            {
                Dictionary<string, string> dict = new Dictionary<string, string>();
                string[] lines = File.ReadAllLines(this.Path);
                string[] pair = null;
                foreach (var line in lines)
                {
                    if (!string.IsNullOrWhiteSpace(line))
                    {
                        pair = line.Split('=');
                        if (pair.Length == 2)
                        {
                            dict.TryAdd(pair[0], pair[1]);
                        }
                    }
                }
                this.Data = dict;
            }
        }
        public static class ConfigurationBuilderExtension
        {
            public static IConfigurationBuilder AddPropetiesFile(this IConfigurationBuilder configurationBuilder, string path)
            {
                configurationBuilder.Add(new PropertiesConfigurationSource(path));
                return configurationBuilder;
            }
        }

 
 
 
 
未完待続...