.Net 自定义读取自定Config文件

23 篇文章 0 订阅
16 篇文章 0 订阅

.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
请按任意键继续. . .

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值