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

Posted 听哥哥的话

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.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
请按任意键继续. . .

 

以上是关于.net分布在指定文件夹的web.confgi或者app.config的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 指定特定分片进行存储或者查询

GlusterFS分布式文件系统

quartz.net 基于数据库的简单实现

asp.net 点击一下文件名或者一个下载按钮,将文件下载下来怎么做啊???

c#如何将html标签写入指定的excel中

Docker网络配置Docker部署分布式项目