Cinchoo - 使用 JSON 格式的配置值
本文演示了如何使用 Cinchoo 将 JSON 数据作为配置源。
1. 简介
Cinchoo 是一个用于 .NET 的应用程序框架。 它为用户提供的其中一个主要功能是应用程序配置管理。应用程序配置是应用程序在运行时从源读取和/或写入的信息。
请访问入门文章 [Cinchoo - 简化的配置管理器] 了解有关 Cinchoo 配置管理器的更多信息。
在本节中,我将向您展示如何使用 Cinchoo 配置框架将 JSON 数据作为配置值。 它提供了一个机会,可以使用行业标准的消息格式作为配置源。
让我们从使用在 test.json 文件中定义的以下值开始。此文件可以放置在任何文件夹中。 定义配置对象时,您必须指定此文件的绝对路径。 请注意,如果该文件不存在,则会在应用程序首次启动时自动创建。
列表 1.1 示例 JSON 文件 (test.json)
{"name":"Mark","address":"10 River Road, 08837","RunDate":"8\/16\/2015 6:16:36 PM"}
2. 如何使用
- 从 此处 下载最新的 Cinchoo 二进制文件。(Nuget 命令: Install-Package Cinchoo)
- 从 Nuget 下载 JSON 配置插件 (Nuget 命令: Install-Package Cinchoo.Core.Configuration.JSON)
- 打开 VS.NET 2010 或更高版本
- 创建一个示例 VS.NET (.NET Framework 4) 控制台应用程序项目。
- 添加对 Cinchoo.Core.dll, Cinchoo.Core.Configuration.JSON 的引用
- 使用
Cinchoo.Core.Configuration
命名空间 - 定义一个配置对象 '
ApplicationSettings
' 如下。
列表 2.1 定义配置对象
[ChoJSONConfigurationSection("appSettings", ConfigFilePath = "test.json")]
public class ApplicationSettings : ChoConfigurableObject
{
[ChoPropertyInfo("name", DefaultValue = "Mark")]
[ChoNotNullOrWhiteSpaceValidator]
public string Name
{
get;
set;
}
[ChoPropertyInfo("address", DefaultValue = "10 River Road, 08837")]
public string Address;
[ChoPropertyInfo("Date", DefaultValue = "%%NOW^MM/dd/yyyy HH:mm:ss%%")]
public DateTime RunDate;
protected override void OnAfterConfigurationObjectLoaded()
{
Console.WriteLine(ToString());
}
}
上面的代码说明了如何定义配置对象。 首先定义一个配置对象 (例如,ApplicationSettings
) 类,从 ChoConfigurableObject
继承,它表明该对象是一个配置对象。 并且它必须使用 ChoJSONConfigurationSectionAttribute
进行修饰以完成定义。 此属性使配置对象能够从 'test.json' 文件读取和写入配置值。
定义三个成员 Name
, Address
和 RunDate
作为具有 get
和 set
的 public
字段或属性。 使用 ChoPropertyInfo
属性修饰它们,以表明它们是配置成员。 在此示例中,Name
属性被赋予 name
作为属性名称,默认值为 'Mark
'。 这意味着,当配置文件中缺少该值时,该成员将默认为默认值。 相应地为每个 appSettings
键声明其他成员。 这是一个使用属性指定配置成员的非常简单明了的方法。
声明完上述类后,现在就可以像从中创建对象一样简单地使用 'test.json' 值了。 对此对象和/或 test.json 文件所做的任何更改都将自动交换。 示例代码如下
列表 2.2 Main 方法
static void Main(string[] args)
{
ApplicationSettings applicationSettings = new ApplicationSettings();
Console.WriteLine(applicationSettings.Name);
ChoConsole.PauseLine();
}
我们首先创建一个 ApplicationSettings
对象的新实例。 仅此而已。 将 appSettings
值加载到对象中的所有繁重工作均由 Cinchoo 框架在后台完成。
只需编译并运行上述示例,它将输出如下
列表 2.3 Test1.exe 的输出
-- Cinchoo.Core.Configuration.JSON.Test.AppSettings State --
Name: Mark
Address: 10 River Road, 08837
RunDate: 8/17/2015 10:02:08 PM
Press ENTER key to continue...
现在让我们看看应用程序如何提取对 test.json 文件所做的更改,并反映在输出中。 打开 test.json 文件,将名称从 'Mark
' 编辑为 'Tom
',然后保存该文件。
列表 2.4 更改 App.Config 文件中的值时 Test1.exe 的输出
-- Cinchoo.Core.Configuration.JSON.Test.AppSettings State --
Name: Mark
Address: 10 River Road, 08837
RunDate: 8/17/2015 10:02:08 PM
Press ENTER key to continue...
-- ChoStandardAppSettingsConfig.Test.ApplicationSettings State --
Name: Tom
Address: 10 River Road, 08837
RunDate: 8/17/2015 10:02:08 PM
就这样。 附上了一个示例项目。 下载并亲自尝试一下。