zoukankan      html  css  js  c++  java
  • .Net 更容易的使用配置文件 SuperConfig

    一、原始配置文件的问题

    我们在做开发时,不管是B/S还是C/S,现在几乎所有的项目都会碰到使用配置文件,简单点的如链接字符串、上传路径啊,一些API的接口地址等等。复杂点就更多了,如ActiveMQ的配置信息(地址、端口、用户名、密码)等等。

    在.Net开发中已经在(Web.config/App.config)中提供了相对完善的配置系统,简单的如:appSettings;复杂的如:section;相信大家一定用过,当然使用配置文件第一步先添加引用:“System.Configuration”;

    1. appSettings使用 System.Configuration.ConfigurationManager.AppSettings[name]即可获取单个的配置项,可以说非常简单方便。
    2. section很多人也许很陌生,但是在开发中也许都碰到过,比如在使用EntityFramework时,会在configSections中添加一项section name为entityFramework一项配置。当然肯定可以自定义section,但在使用配置文件的section相对比较复杂,而且数据类型支持的很有限,代码过多等原因。在实际开发中LZ比较少用section,实在配置项过多逼不得已才会使用section。

    如上所说,在配置文件中碰到需要配置很多项时,原始配置文件存在着诸多不便,本篇就是告诉大家怎么在配置多项时更加容易的使用配置文件。

    二、思路和解决办法

    a)、思路

    1. 最好沿用原始的配置方法,也就是使用section,这样可以不用指定配置文件位置,名称等等。当然如果需要单独的配置文件,或者不用section模式也可以随意的扩展。再或者知道xml格式的字符串也可以获取配置,如配置在数据库中等。
    2. 需要新建一个类,其中包括我们需要配置的信息,也就是一些属性,当然最好不需要继承父类或者实现接口。
    3. 需要配置配置文件,当然是按照新建类的格式配置,数据类型简单的需要支持Int、String、double、Enum、Datetime等,复杂的最好支持:KeyValuePair、Array、List、Dictionary等。
    4. 最好一行代码使用泛型可以获取具体的配置信息,如var config=Xxxx<T>.Value;

    b)、解决办法

    目前在网上LZ并没有找到在.Net中更好的使用配置文件,所以LZ无奈自己写了一个,可以实现我所说的“思路”,并MIT开源放置Github上,供大家交流学习,而且上传至Nuget,方便大家使用。

    三、Emrys.SuperConfig

    Github:https://github.com/Emrys5/Emrys.SuperConfig  欢迎大家Star ^_^

    Nuget:https://www.nuget.org/packages/Emrys.SuperConfig

    Wiki:https://github.com/Emrys5/Emrys.SuperConfig/wiki

    四、Emrys.SuperConfig 简单应用

    1. 安装包 Emrys.SuperConfig
      PM>Install-Package Emrys.SuperConfig
    2. 新建类 UserInfo

       1 class UserInfo
       2 {
       3     public string UserName { get; set; }
       4     public string Email { get; set; }
       5     public int Age { get; set; }
       6     public string BlogUrl { get; set; }
       7     public Color FavoriteColor { get; set; }
       8     public Color DislikeColor { get; set; } 
       9     public List<string> Language { get; set; }
      10    
      11 }
      12 enum Color{Red,Blue,Black} 
    3. 在web.config或者app.config中配置配置文件
       1 <?xml version="1.0" encoding="utf-8" ?>
       2 <configuration>
       3   <configSections>
       4     <section name="userInfo" type="Emrys.SuperConfig.Section,Emrys.SuperConfig"></section>
       5   </configSections>
       6   <userInfo userName="Emrys" email="i@emrys.me" age="27">
       7     <blogUrl>http://www.cnblogs.com/emrys5/</blogUrl>
       8     <favoriteColor>Blue</favoriteColor>
       9     <dislikeColor>2</dislikeColor> 
      10     <language>
      11       <value>Putonghua</value>
      12       <value>Huaipu</value>
      13       <value>English</value>
      14     </language> 
      15   </userInfo> 
      16 </configuration> 
    4.  获取配置文件信息

       var user = SuperConfig<UserInfo>.Value;

    只需要一行代码就可以获取所有的配置信息,可以用简单方便易用来形容。

    四、Emrys.SuperConfig 其他

    1、支持的数据类型

    普通的数据类型支持 String、Int、Double、DateTime、Bool、Enum等,这些都是比较简单的数据类型直接使用即可。

    更多复杂的类型如KeyValuePair/Array/List/Dictionary等请参看Wiki:支持数据类型

    2、自定义配置文件位置

    在实际开发中,我们也许不把配置文件放置默认的Web.config/App.config,如单独配置用户的信息等等

    更多请参看Wiki:自定义配置文件位置

    3、自定义配置文件命名规则

    在开发中,有很多人程序员的命名规则不是很统一,所有就会出现名称大小写的问题,其中命名包含xml的element和Attribute的名称。

    SuperConfig默认采用的首字母小写,也就是小驼峰。

    更多请参看Wiki:自定义配置文件命名规则

    4、自定义Section格式

    在原始的配置文件中,我们需要自定义配置文件,那么就需要在配置文件中配置section,如我们常见的EntityFramework。

    如果我们自定义配置文件位置,也就说不用原始的配置文件,那么我们也就没必要按照之前的配置方法每次在configSections新建一个Section,然后在配置。

    我们完全可以自定义自己的配置文件格式,如:

    <?xml version="1.0" encoding="utf-8" ?> 
    <config>
      <userInfo userName="CEmrys" email="i@emrys.me" age="17">
        <blogUrl>http://www.cnblogs.com/emrys5/</blogUrl>
        <favoriteColor>Blue</favoriteColor>
        <dislikeColor>2</dislikeColor>
      </userInfo>
      <arrayString>
        <item>a</item>
        <item>b</item>
        <item>c</item>
        <item>d</item>
        <item>e</item>
      </arrayString>
    </config>

    更多请参看Wiki:自定义Section格式

    五、总结

    LZ鉴于不够方便的在.Net中使用配置文件和在网上没有找到合适的方法,所有自己按照自己的想法写了一个,希望对大家也有所帮助。

    最后别忘记了“推荐”和Github Star 谢谢!

    Github:https://github.com/Emrys5/Emrys.SuperConfig  欢迎大家Star ^_^

    Nuget:https://www.nuget.org/packages/Emrys.SuperConfig

    Wiki:https://github.com/Emrys5/Emrys.SuperConfig/wiki

    作者:Emrys
    出处:http://www.cnblogs.com/emrys5/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    windows中dos命令指南
    HDU 2084 数塔 (dp)
    HDU 1176 免费馅饼 (dp)
    HDU 1004 Let the Balloon Rise (map)
    变态杀人狂 (数学)
    HDU 2717 Catch That Cow (深搜)
    HDU 1234 开门人和关门人 (模拟)
    HDU 1070 Milk (模拟)
    HDU 1175 连连看 (深搜+剪枝)
    HDU 1159 Common Subsequence (dp)
  • 原文地址:https://www.cnblogs.com/emrys5/p/superconfig.html
Copyright © 2011-2022 走看看