动态【配置文件】之实现(一)

  上次,我们分析了“动态”配置文件的基本需求,也基本定下了设计思路。我们今天就来实现第一要素:读写配置文件

  按照我们上次的分析要求,我设计了以下几个类

ConfigManager,【配置文件管理类】

Config,【单个配置文件】

ConfigSection,【配置文件中的单个程序节】

三个类依次包含,为了方便程序调用,为此,设计了三个接口,分别由三个类来实现。这样一来,外部调用的程序,只需要知道接口,而不需要引用这个类;

部分定义代码

IConfigManager定义

ExpandedBlockStart.gif IConfigManager
 1       ///   <summary>
 2       ///  配置文件管理接口
 3       ///   </summary>
 4       public   interface  IConfigManager
 5      {
 6           ///   <summary>
 7           ///  增加配置文件
 8           ///   </summary>
 9           ///   <param name="pCfg"> 配置文件 </param>
10           void  AddConfig(IConfig pCfg);
11           ///   <summary>
12           ///  删除配置文件
13           ///   </summary>
14           ///   <param name="pCfg"> 配置文件 </param>
15           void  DeleteConfig(IConfig pCfg);
16           ///   <summary>
17           ///  定位配置文件
18           ///   </summary>
19           ///   <param name="pName"></param>
20           ///   <returns></returns>
21          IConfig FindConfig( string  pName);
22           ///   <summary>
23           ///  配置文件是否存在
24           ///   </summary>
25           ///   <param name="pName"></param>
26           ///   <returns></returns>
27           bool  HasExist( string  pName);
28           ///   <summary>
29           ///  默认配置文件后缀
30           ///   </summary>
31           string  DefaultEx
32          {
33               get ;
34               set ;
35          }
36           ///   <summary>
37           ///  默认配置文件存放位置
38           ///   </summary>
39           string  DefaultFolder
40          {
41               get ;
42               set ;
43          }
44           ///   <summary>
45           ///  加载目录下的所有配置文件
46           ///   </summary>
47           void  Load();
48           ///   <summary>
49           ///  当前的配置文件
50           ///   </summary>
51          IConfig CurrentConfig
52          {
53               get ;
54               set ;
55          }
56      }

 

IConfig定义

 

ExpandedBlockStart.gif 代码
 1       ///   <summary>
 2       ///  单个配置文件
 3       ///   </summary>
 4       public   interface  IConfig
 5      {
 6           ///   <summary>
 7           ///  配置文件名称
 8           ///   </summary>
 9           string  Name
10          {
11               get ;
12               set ;
13          }
14           ///   <summary>
15           ///  增加程序节
16           ///   </summary>
17           ///   <param name="pCfgSec"></param>
18           void  AddSection(IConfigSection pCfgSec);
19           ///   <summary>
20           ///  删除程序节
21           ///   </summary>
22           ///   <param name="pCfgSec"></param>
23           void  DeleteSection(IConfigSection pCfgSec);
24           ///   <summary>
25           ///  定位程序节
26           ///   </summary>
27           ///   <param name="pName"></param>
28           ///   <returns></returns>
29          IConfigSection FindSection( string  pName);
30           ///   <summary>
31           ///  查询程序节是否存在
32           ///   </summary>
33           ///   <param name="pName"></param>
34           ///   <returns></returns>
35           bool  HasExist( string  pName);
36           ///   <summary>
37           ///  直接读取某个程序节下的设置
38           ///   </summary>
39           ///   <param name="pSectionName"></param>
40           ///   <param name="pKeyName"></param>
41           ///   <param name="pDefaultValue"></param>
42           ///   <returns></returns>
43           object  ReadKeyValue( string  pSectionName,  string  pKeyName,  object  pDefaultValue);
44           ///   <summary>
45           ///  写入某个程序节下,如果此程序节不存在,将创建
46           ///   </summary>
47           ///   <param name="pSectionName"></param>
48           ///   <param name="pKeyName"></param>
49           ///   <param name="pValue"></param>
50           void  WriteKeyValue( string  pSectionName,  string  pKeyName,  object  pValue);
51           ///   <summary>
52           ///  加载文件,读取全部配置
53           ///   </summary>
54           ///   <param name="pFileName"></param>
55           void  LoadfromFile( string  pFileName);
56           ///   <summary>
57           ///  设置保存到文件
58           ///   </summary>
59           void  SaveToFile();
60           ///   <summary>
61           ///  自动保存
62           ///   </summary>
63           bool  AutoSave
64          {
65               get ;
66               set ;
67          }
68           ///   <summary>
69           ///  是否开启文件监测
70           ///   </summary>
71           bool  Watched
72          {
73               get ;
74               set ;
75          }
76           ///   <summary>
77           ///  此配置文件的文件路径
78           ///   </summary>
79           string  FileName
80          {
81               get ;
82               set ;
83          }
84      }

 

IConfigSection定义

 

ExpandedBlockStart.gif 代码
     ///   <summary>
    
///  配置分类
    
///   </summary>
     public   interface  IConfigSection
    {
        
string  SectionName
        {
            
get ;
            
set ;
        }
        
void  Add( string  pKeyName,  object  pKeyValue);
        
void  Delete( string  pKeyName);
        
object  ReadKeyValue( string  pKeyName,  object  pDefaultValue);
        
void  WriteKeyValue( string  pKeyName,  object  pValue);
        
void  SaveToFile();
    }

 

 

由于本次采用ini文件作为配置文件的载体,所以,在读写上就省略了很多方法。甚至在IConfig接口上提供了读写方法,但为了XML文件之类的读写,还是提供了方法定义。

(未完待续...)

转载于:https://www.cnblogs.com/feedback/archive/2010/05/16/1736931.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值