作者tomex (tomex_ou)
看板C_Sharp
标题[心得] ConfigurationManager类别
时间Sun Jan 21 20:51:49 2007
说到要把ap的设定档,直觉是要用xml档案
可以使用XmlDocument来完整读写xml档。
微软为了简单这类config/xml的操作
.Net 2.0实作了ConfigurationManager来操作xml档
例如单一值,可以直接:
string portNumber = ConfigurationManager.AppSettings["PortNumber"];
档案内容如下:
<appSettings>
<add key="PortNumber" value="4532"/>
</appSettings>
除了appSettings外,也支援常用的connectString等等。
这时候你会发现一些问题:
1.为何tag name要使用java那种camel命名法呢? 很不合.Net命法!
2.似乎这样tag是很特定的,连写法都是制式,那怎麽自订自己的tag呢?
要在*.config内自订自己的xml区块是ok的,
但要读取它你会发现ConfigurationManager.GetSection(),传回object型别
你一定对这个object感到奇怪吧?
此文就讲到怎麽读自订的区块:
http://www.cnblogs.com/AchillesHuang/archive/2005/11/27/285491.aspx
自订的区块也是靠XmlNode loop慢慢读进来,没比较高尚。
接着,你就会想到怎麽写档改值呢? 上文没有提到
因此我找到另一篇文章:
http://www.aspxboy.com/private/5410/default.aspx
利用ConfigurationSection来写值,但它只能写制式格式的值
对於自订的区块写档并没有用处(或许我试不出来)。
文末有提到使用特定的class来转型,但它只示范写单行的attribute值而己
对於阶层式的自订xml区到,看不到怎麽写!
而且,常常只是想储存某值时,却要用到上述的类别转型
从文中也知道手法很不高尚,一直assign或lopp读值
好像没有比XmlDocument的SelectSingleNode()函式来得有用、简单。
所以,在读取的方式,实作IConfigurationHandle介面能简化及封装
这样的好处是避免一直作XmlNode的操作,可理解。
但写值方式,找了很多文章没有提及,
也因此让我不敢用上述的类别,仍是暂时使用XmlDocument来操作config档。
最後,也发现那些java命名的节点,是内定有其意义的
那麽我们自订的就不该用这样的命名,避免和内定发生冲突。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.50.15
1F:推 PsMonkey:虽然看不懂,不过还是推一下 01/22 01:16
2F:推 tomex:呵呵,以後你有写config架构需求时,你就看得懂了 :) 01/22 03:41