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

一年好景君须记,最是橙黄橘绿时。这篇文章主要讲述.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.ConfigurationSectionpublic 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.ConfigurationElementCollectionpublic 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.ConfigurationElementpublic 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 请按任意键继续. . .

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

    推荐阅读