C#:多种读取配置的方式

一、app.config
这种方式最简单直接从app.config里面读取,调用内置API接口

ConfigurationManager.AppSettings["demo"];
ConfigurationManager.ConnectionStrings["DbServer"].ConnectionString;

此时app.config内的配置文件







获取最新配置文件

ConfigurationManager.RefreshSection("appSettings");
ConfigurationManager.AppSettings["demo"]

将内存数据更新至配置文件

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["demo"].Value = "456";
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

二、自己建立app.config的Section
继承ConfigurationSection

public class SectionDemo:ConfigurationSection{
    [ConfigurationProperty(“demo”,IsRequired=true)]
    public Demo demo{
          get{
               return this["demo"] as Demo;
             }
    }
}

Demo类继承ConfigurationElement

public class Demo:ConfigurationElement{
[ConfigurationProperty("value",IsRequired = true)]
  public string Value{
        get{
              return this["value"] as string;
        }
  }
}

首先,得在app.config中声明配置


tpye配置参见:app.config加载文件及程序集

三、从Xml读取
1.反序化基础类

public static object DeserializeFromXml(string xmlFilePath,Type type){
        obejct result = null;
        if(File.Exists(xmlFilePath)){
          using(StreamReader reader = new StreamReader(xmlFilePath))
         {
               XmlSerializer xs = new XmlSerializer(type);
               result = xs.Deserialize(reader);   
          }
        }
}

2.实体

[XmlRoot(ElementName = "ConfigDemo")]
public class ConfigDemo{
      [XmlElement(ElementName = "Demo")]
      public string DemoInnerText{
          set;get;
      }
}

3.Xml配置文件


  123456

4.调用

ConfigDemo configDemo = XmlUnit.DeserializeFromXml("{xml文件地址}",typeof(ConfigDemo) as ConfigDemo);

总结:
当一个解决方案集成过多的服务时,避免不了需要多项配置,合理的设计配置文件有助于我们管理和维护代码,这方面是我需要思考的问题

待解决问题:
1.如果配置一个多服务解决方案的服务启动或关闭问题

其他涉猎:
1.Xml基础
2.set、get
3.ConfigSection
4.Xml文件缓存机制
5.Xml缓存不同步文件
6.读写Xml,了解c#读写

你可能感兴趣的:(C#:多种读取配置的方式)