自定义配置类





5.00/5 (3投票s)
本文介绍了一个类似于 CSS 的配置类。
引言
本文介绍了一个简单的配置读取器,它使用类似于 CSS 的语法进行配置。其主要目的是为特定环境的应用程序提供配置数据。例如,为生产环境和开发环境维护单独的配置文件是很常见的做法。然而,在某些情况下,你可能希望将不同环境的配置数据合并到一个配置文件中。这可能是因为你需要访问开发环境中的生产设置,或者因为这些环境几乎具有相同的设置,只有少数差异。
因此,我开发了一个使用类似于 CSS 语法的配置读取器,以便可以轻松地克隆配置文件中的部分并覆盖属性。以下是配置文件的摘录。
@dev {
DbHost : localhost
DbName : dbname
DbUid : root
DbPwd : pass
}
@clone {
live : dev
}
@live {
DbHost : remote.db.com
}
上面的配置数据包含三个部分。部分以 @
符号开头,部分属性包含在花括号中。为了使部分有效,必须将闭合花括号放在新的一行上。请注意,部分属性类似于 CSS 属性。@clone
部分是一个特殊的指令。其目的是克隆具有新部分名称的现有部分的设置。在上面的示例配置中,已声明一个名为“dev
”的部分,用于开发环境。 “dev
”部分公开了用于数据库连接的属性。与其为生产环境创建一个新部分(可能与开发环境共享一些属性),不如使用 @clone
部分来克隆开发环境。 克隆后,可以覆盖属性并向克隆的部分添加新属性。克隆部分时,新的部分名称必须位于 ':
' 的左侧,要克隆的部分位于右侧。可以通过将克隆放在新的一行上克隆多个部分。
@clone {
live : dev
live2 : live
}
还存在另一个特殊的节指令,可以从另一个配置文件导入配置节。例如,你可能有一个用于应用程序特定设置的 app.cf 配置文件和一个用于用户设置的 user.cf 配置文件。与其维护两个单独的配置文件,不如使用 @import
指令将两个文件合并到一个 config 文件中。
@import {
User : path to user.cf file
}
在上面的示例中,User
属性是user.cf 文件中要导入的部分。可以通过将 import
语句放在 @import
部分内的新行上导入多个部分。或者,可以使用通配符“*” 导入所有部分,如下所示。
@import {
* : path to user.cf file
}
Using the Code
创建一个 xConfiguration
类的新实例。必须将配置文件传递给类的构造函数。
xConfiguration config = new xConfiguration("path to config.cf");
要访问部分属性,请使用 GetProperty(sectioName, propertyName)
方法。
Console.WriteLine(config.GetProperty("dev", "DbHost"));
为了方便起见,可以使用 GetSection(sectionName)
方法返回部分属性。
var dev = config.GetSection("dev");
GetSection()
方法返回一个 Dictionary<string, string>
对象。
最后,可以使用 GetSectionNames
属性返回所有部分名称的集合。
这标志着本文的结束。 请随时留下您的评论和建议。
历史
- 2014 年 5 月 18 日:初始版本