博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net 更容易的使用配置文件 SuperConfig
阅读量:5864 次
发布时间:2019-06-19

本文共 3165 字,大约阅读时间需要 10 分钟。

一、原始配置文件的问题

我们在做开发时,不管是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:  欢迎大家Star ^_^

Nuget:

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
    Language { get; set; }10 11 }12 enum Color{Red,Blue,Black}
  3. 在web.config或者app.config中配置配置文件
    1 
    2
    3
    4
    5
    6
    7
    http://www.cnblogs.com/emrys5/
    8
    Blue
    9
    2
    10
    11
    Putonghua
    12
    Huaipu
    13
    English
    14
    15
    16
     
  4.  获取配置文件信息

    var user = SuperConfig
    .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,然后在配置。

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

http://www.cnblogs.com/emrys5/
Blue
2
a
b
c
d
e

更多请参看Wiki:

 

五、总结

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

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

Github:  欢迎大家Star ^_^

Nuget:

Wiki:

 

你可能感兴趣的文章
内置模块(二)
查看>>
大道至简
查看>>
Java使用PropertyDescriptor获取实体类中私有属性的值,并给私有属性赋值
查看>>
PHP 单点登录实现方案
查看>>
资金流学习 - 关注点
查看>>
Linux 常用命令集合
查看>>
box-sizing
查看>>
js 从数组中随机获取一个值
查看>>
css - 紧贴底部的页脚
查看>>
Html - 对话箭头
查看>>
学习笔记——责任链模式
查看>>
Ubuntu安装VMware Tools
查看>>
Codeforce914B (Conan and Agasa play a Card Game)
查看>>
手机前端开发调试利器 – vConsole
查看>>
【Unity】3.0 第3章 创建和导入3D模型
查看>>
MySQL案例08:MySQL Scheduler Events带来的风险
查看>>
Flexigrid使用说明
查看>>
仿新浪右下角视频弹窗(视频弹出广告)播放器
查看>>
Java打印九九乘法表
查看>>
Linux服务器安装redis数据库教程
查看>>