• .net分布在指定文件夹的web.confgi或者app.config


    .Net里面,ConfigurationManager默认读取的是Web.config或者App.config但是,什么都放在这两个文件里面,感觉太多了,也不好管理配置。于是参考了下别人的资料,自己写了一个例子,例子实现的的是E:App.config的文件,文件格式如下
    
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="books" type="ConfigurationDemo.BooksSection, ConfigurationDemo"/>
      </configSections>
      <books>
        <book name="123" author="456"/>
      </books>  
    </configuration>
    
    要实现这样的功能,就要实现自己的ConfigurationSection,ConfigurationElementCollection,ConfigurationElement 
    
    
    1.ConfigurationSection
    
    public class BooksSection : ConfigurationSection
        {
            [ConfigurationProperty("books", IsRequired = true)]
            public string Category
            {
    
                get
                {
                    return (string)base["Category"];
                }
    
                set
                {
                    base["Category"] = value;
                }
    
            }
            [ConfigurationProperty("", IsDefaultCollection = true)]
            public BookElementCollection Books
            {
    
                get
                {
                    return (BookElementCollection)base[""];
                }
    
            }
    
        }
    
    2.ConfigurationElementCollection
    
        public class BookElementCollection : ConfigurationElementCollection
        {
            protected override ConfigurationElement CreateNewElement()
            {
                return new BookElement();
            }
    
            protected override object GetElementKey(ConfigurationElement element)
            {
                return ((BookElement)element).Name;
            }
    
            public override ConfigurationElementCollectionType CollectionType
            {
                get
                {
                    return ConfigurationElementCollectionType.BasicMap;
                }
            }
    
            protected override string ElementName
            {
                get
                {
                    return "book";
                }
            }
            public BookElement this[int index]
            {
    
                get
                {
                    return (BookElement)BaseGet(index);
                }
                set
                {
                    if (BaseGet(index) != null)
                    {
                        BaseRemoveAt(index);
                    }
                    BaseAdd(index, value);
                }
    
            }
        }
    
    
    3.ConfigurationElement
    
        public class BookElement : ConfigurationElement
        {
    
            [ConfigurationProperty("name", IsRequired = true)]
            public string Name
            {
                get
                {
                    return (string)base["name"];
                }
    
                set
                {
                    base["name"] = value;
                }
    
            }
    
            [ConfigurationProperty("author", IsRequired = true)]
    
            public double Author
            {
                get
                {
                    return (double)base["author"];
                }
    
                set
                {
                    base["author"] = value;
                }
            }
    
        }
    
    
    
    4.0Config文件
    
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="books" type="ConfigurationDemo.BooksSection, ConfigurationDemo"/>
      </configSections>
      <books>
        <book name="123" author="456"/>
      </books>  
    </configuration>
    
    5.0读取
    
    
            static void Main(string[] args)
            {
                string configPath = @"E:App.config";
                ExeConfigurationFileMap map = new ExeConfigurationFileMap();
                map.ExeConfigFilename = configPath;
    
                var configManager = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
                if (configManager.HasFile)
                {
                    BooksSection config = (BooksSection)configManager.GetSection("books");
                    Console.WriteLine(config.Books[0].Name);
                }
    
            }
    结果
    
    123
    请按任意键继续. . .
  • 相关阅读:
    集合关系运算 交、差、并集
    字符串 数字 列表 元祖 字典 的不同分类and集合的概念
    我的python之路6(基础练习)
    我的python之路6(整理)
    编写Linux下socket协议TCP和UDP的Client Server程序
    linux添加新用户
    HTML5怎样在网页中使用摄像头功能 时间:2013-04-10 19:56 来源:18素材
    boost 同步定时器
    C++的multiple definition of *** first defined here错误
    TCP与UDP的区别,以及它们各自的定义
  • 原文地址:https://www.cnblogs.com/kexb/p/6880067.html
Copyright © 2020-2023  润新知