• 配置文件读取


    从配置文件中读取内容,可以使用以下方法:

    配置文件以下边为准

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <sectionGroup name="mygroup">
          <section name="mysection"   type="CLRSecondTests.ConfigSection,CLRSecondTests"/>
          <section name="color"  type="System.Configuration.NameValueSectionHandler" />
        </sectionGroup>
      </configSections>
      <mygroup>
        <color>
          <add key="red"   value="#ff0000"/>
          <add key="green" value="#00ff00"/>
          <add key="blue"  value="#0000ff"/>
        </color>
        <mysection  user="test" password="test123">
          <element element1="属性1" element2="属性2"></element>
        </mysection>
      </mygroup>
    </configuration>

    方法一:

      public void Test2()
            {
                NameValueCollection color = (NameValueCollection)ConfigurationManager.GetSection("mygroup/color");
                foreach (String str in color.AllKeys)
                {
                    Console.WriteLine($"str :{color[str]}");
                }
            }


    其中,color配置节的路径要正确,它在组mygroup下,所以,完整的相对路径应该是mygroup/color。 

    然后通过configurationManager获取之后,获取到的是键值对,在配置文件中的类型中要写正确:<section name="color"  type="System.Configuration.NameValueSectionHandler" />

    然后就可以使用了

    方法二:自定义与配置文件结构相同的类型

        public class ConfigSection : ConfigurationSection
        {
            public ConfigSection()
            {
                //
                // TODO: 在此处添加构造函数逻辑
                //
            }
            [ConfigurationProperty("user", DefaultValue = "yanghong", IsRequired = true)]
            public string User
            {
                get { return (string)this["user"]; }
                set { this["user"] = value; }
            }
    
            [ConfigurationProperty("password", DefaultValue = "password", IsRequired = true)]
            public string PassWord
            {
                get { return (string)this["password"]; }
                set { this["password"] = value; }
            }
    
            [ConfigurationProperty("element")]
            public elementinfo Element
            {
                get { return (elementinfo)this["element"]; }
                set { this["element"] = value; }
            }
        }
        public class elementinfo : ConfigurationElement
        {
            public elementinfo() { }
    
    
            [ConfigurationProperty("element1", DefaultValue = "element1", IsRequired = true)]
            public string Element1
            {
                get { return (string)this["element1"]; }
            }
    
            [ConfigurationProperty("element2", DefaultValue = "element2", IsRequired = true)]
            public string Element2
            {
                get { return (string)this["element2"]; }
            }
    
    
        }

    要注意的是:

    自定义类型,类要从ConfigurationSection派生

    然后定义的属性要贴上属性标签,同时,内嵌的类型也要定义完整,

    使用时,可以直接获取配置节,转换为自定义类型:

    public void Test1()
            {
                ConfigSection config = (ConfigSection)ConfigurationManager.GetSection("mygroup/mysection");
                Console.Write($"用户名:{ config.User.ToString() }密码:{config.PassWord} 元素属性:{config.Element.Element1} {config.Element.Element2}");
            }


      

  • 相关阅读:
    至最近写的微博记录(一)
    对古人“一命二运三风水,四积德五读书”的人生命运总结的理解
    福建省获得央行颁发的非金融机构支付业务许可牌照的公司(至20120801)
    替信息系统运维工作正名
    在信息系统运维开发中,对MVC框架认识上的一种变通
    Elasticsearch 从入门到学会之六(索引API特殊管理)
    Python的Web项目实现 Flask
    python的方法整理
    Shell脚本
    各种测试场景case整理
  • 原文地址:https://www.cnblogs.com/jams742003/p/13962669.html
Copyright © 2020-2023  润新知