zoukankan      html  css  js  c++  java
  • .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
    请按任意键继续. . .
  • 相关阅读:
    《构建之法》第8、9、10章 读后感
    [团队项目]SCRUM项目6.0 7.0 (新)
    [团队项目]SCRUM项目5.0
    [团队项目]SCRUM项目4.0
    [团队项目] Scrum 项目 3.0 SCRUM 流程的步骤2: Spring 计划
    [操作系统]实验三 进程调度模拟程序
    [团队项目] Scrum 项目 2.0 产品BACKLOG
    复利计算的总结
    复利/单利计算程序进度0321更新
    0312 复利计算器2.0 运行与介绍
  • 原文地址:https://www.cnblogs.com/kexb/p/6880067.html
Copyright © 2011-2022 走看看