zoukankan      html  css  js  c++  java
  • ASP.NET Core-自定义配置源案例

    配置相关的几个对象:Configuration、ConfigurationBuilder和ConfigurationSource、ConfigurationProvider。
    Configuration对象承载着配置信息;
    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;
                }
            }

    未完待续...

  • 相关阅读:
    SVN增加文件后,文件无法自动包括在项目中的原因
    关于浏览器和IIS基础的简单理解
    关联查询之速度优化
    <>这个符号表示泛型的意思
    傅里叶变换
    distinct和group by的性能比较
    VS2010 代码前出现虚线
    SQL的 like 中间字符通配 用法
    模态对话框中的window.close关闭时会打开新页面
    最大差值
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/12145894.html
Copyright © 2011-2022 走看看