65.9K
CodeProject 正在变化。 阅读更多。
Home

Cinchoo - 使用 JSON 格式的配置值

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.75/5 (4投票s)

2015年8月18日

CPOL

3分钟阅读

viewsIcon

16801

本文演示了如何使用 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, AddressRunDate 作为具有 getsetpublic 字段或属性。 使用 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

就这样。 附上了一个示例项目。 下载并亲自尝试一下。

© . All rights reserved.