基于kbmMW Configuration Framework 实现配置文件对象化

实做一个应用,一般情况下,我们总要为之做一个配置文件,用来设置象数据库联接参数等信息,然后用TIniFile或者注册表对象来读写。为此,kbmMW为我们带来更好用的方式,让代码维护起来更优雅。

如果你对kbmMW Configuration Framework一无所知,可以先看看译的博文,大体先了解一下工作原理与基本使用方法:Configuration REST easy with kbmMW #7以及窑洞洞主xalion写的使用kbmMWConfiguration 让 kbmmw smartservice 更聪明

如果功课做完,接下来,就可以看看我在项目中实现自己的配置对象:

第一步,定义自己的配置对象类:

  TConfigurableObject = class(TkbmMWConfigurableObject)
  private
    [kbmMW_Config('Host',mwcdReadWrite)]
    FHost: string;

    [kbmMW_Config('Host',mwcdReadWrite)]
    FPort: string;
  public

    property Host:string read FHost write FHost;
    property Port:string read FPort write FPort;
  end;

为了易读,上面代码做了简化,Host,指服务器的地址,Port指服务器的端口。

第二步,定义配置对象的存储:

在同一单元的initialization段,用如下代码实现。这里,我用的xml格式在执行文件同目录下保存xml文件,命名为config.xml。注意:这一步是可选择的,如果不处理,config对象会自动在执行文件当前目录生成xxxx_config.xml文件。

initialization

Config.Storage:=TkbmMWXMLConfigurationStorage.Create(GetApplicationPath('config.xml'));//注意:这一步是可选择的,如果不处理,config对象会自动在执行文件当前目录生成xxxx_config.xml文件。

第三步,在同一单元的initialization段,注册TConfigurableObject,让config对象能够通过xml文件读写这个他。

initialization

Config.Storage:=TkbmMWXMLConfigurationStorage.Create(GetApplicationPath('config.xml'));

kbmMWRegisterKnownClass(TConfigurableObject);

第四步,使用自定义的配置对象TConfigurableObject

在MainDatamodule单元中,声明一个类型为TConfigurableObject的对象,然后通过该对象的属性,就可以读取与设置配置文件了。

最后,还要注意其他的问题:

默认情况下,kbmMW Configuration Framework自动备份五次配置文件,如果不需要,按下面代码:

initialization

Config.Storage:=TkbmMWXMLConfigurationStorage.Create(GetApplicationPath('config.xml'));
Config.Storage.BackupMaxCount:=-1;//不生成备份文件.

全局的Config对象与配置对象的关系,这个我们也要知道,默认情况下,配置对象的Configuration属性,即指向Config,象上面的代码,就是这样的关系。知道了这个关系,我们就可以实现的配置对象的读写,有些时候,当我们修改了配置文件的属性,想立即写入配置文件,用下面的代码:

  ConfigObject.Configuration.Storage.Save;

这看起来很啰嗦,作者为我们封装了一个方法:

ConfigObject.WriteConfig;//写配置文件内容。

同样,还有一个读方法:

ConfigObject.ReadConfig;//读配置文件
原文地址:https://www.cnblogs.com/kinglandsoft/p/kbmMW_Configuration_Framework.html