VS2005/2008-配置文件(.config/Settings)

文章描述:-2022年3月28日发(作者:钟期光)VS-配置文件(.configSettings) 一、.config设置 ET的应用程序配置文件,使用的是XML格式。相对II文件来说,它的功能要强上不少,而且具有很强的可扩展性。它的缺点是不能直接进行写操作,也就是说,不能直接在程序中修改配置文件的数据(当然不是指不能,不过不是本文讨论的范围)。本文主要目的是探讨如何扩展配置

-

VS2005/2008-配置文件(.config/Settings)2022年3月28日发(作者:钟期光)


VS20052008-配置文件(.configSettings)

一、.config设置
ET的应用程序配置文件,使用的是XML格式。相对II文件来说,它的功能要强上
不少,而且具有很强的可扩展性。它的缺点是不能直接进行写操作,也就是说,不能直接在
程序中修改配置文件的数据(当然不是指不能,不过不是本文讨论的范围)。本文主要目的
是探讨如何扩展配置文件,并在其加入各种自定义配置信息。

1. 使用
简单的配置信息,可以直接放入标记中。如:





相应访问代码如下:
string fileame =
t(

2. 自定义配置节(section)名称
比如,我们要使用下面的配置结构,将配置信息归类分组:









Area= Device= Customer=
>



但是光这样子说明是不行的。没有声明,是不能使用自定义的配置段。我们必须要在
配置文件前面加入声明:



type=, System, Ve
rsion=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 >

type=, System, Ver
sion=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 >
type=agSectionHandler, System, Versi
on=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 >



声明和配置的关系,示意图如下:

由图上可以看出,ameValueSectionHandler和DictionarySectionHandler在定
义配置文件的内容形式上是一样的,都是用来设置内容的。只是返回到C#中的类
不太一样,可以参考下面的代码示例。
另外,如果不关心Handler类的版本等信息,可以直接省略。如
ameValueSectionHandler可以直接如下声明:
ueSectionHandler, System

把上面的声明段放入配置文件中,我们的配置结构就可以正常使用
了。声明中,< sectionGroup>用来定义不含配置数据的节的名称。
用来定义
含有自定义配置数据的节的名称。< section type>用来指定定义配置数据的类型。

注意,自定义的配置节,不能使用
来访问,要
使用 fig。

.ET已经定义了3种配置类型:
a. ameValueSectionHandler
相应访问代码如下:
ameValueCollection myameValue= (ameValueCollection)ur
fig(@
string Area = myameValue[
string Device= myameValue[
string Customer = myameValue[

b. DictionarySectionHandler
相应访问代码如下:
Hashtable myameValue= (Hashtable)urationSet
fig(@
string Area = myameValue[
string Device= myameValue[
string Customer = myameValue[

c. SingleTagSectionHandler
相应访问代码如下:


Hashtable myameValue= (Hashtable)urationSet
fig(@
string Area = myameValue[
string Device= myameValue[
string Customer = myameValue[

这三种类型的详细信息,可以参考 MSD 文档。同时.ET 还定义了
IgnoreSectionHandler类型,为 uration 之外的系统所读取和处理的配
置节提供节处理程序定义。
除此之外,.ET提供了IConfigurationSectionHandler接口,这样我们还可以自
行进行扩展,以设计出我们自已的配置形式。

3. 自定义配置结构 (使用IConfigurationSectionHandler)
假设有以下的配置信息,其在MyInfo可以重复许多次,那么应如何读取配置呢?这时就
要使用自定义的配置程序了。





访问代码如下:
Hashtable cfgTable = (Hashtable)fig(
s

( == 2);
Hashtable cfgFuzhou = (Hashtable)cfgTable[
Hashtable cfgShanghai = (Hashtable)cfgTable[
( cfgFuzhou[
( cfgShanghai[
( cfgFuzhou[
( cfgShanghai[

foreach(Hashtable cfg in )
{
ine(
[
}


为了能使用上面的访问代码来访问配置结构,我们需要生成一个特定的配置读取类
(ConfigurationSectionHandler),例子很简单,就不多做说明了:
public class MyInfoSectionHandler: IConfigurationSectionHandler
{
public object Create(object parent, object configContext,
ode section)
{
Hashtable config = new Hashtable();
foreach(Xmlode node in odes)
{
if( !=


throw new urationException(不可识别的配置项


Hashtable item = new Hashtable();
foreach(XmlAttribute attr in utes)
{
switch()
{
case
case
case
(, );
break;
default:
throw new urationException(不可识别的配置
属性
}
}
(item[
}
return config;
}
}


然后,我们再定义配置说明。其中,SectionHandler 是
MyInfoSectionHandler类的带名字空间的完整名称;myApp 则是定义
MyInfoSectionHandler类的程序集不带扩展名的名字(如或):




, myApp >







根据上面的例子,我们可以使用IConfigurationSectionHandler来实现任意的配置文件
结构。






二、gs 设置

可以使用数据网格视图,很方便
在VS 2005中设置和读取配置文件已经变的很简单了,而且是强类型的,读取的值可
以直接赋值给相应的变量,无需强制转换。

1. 在VS 2005中进行应用程序设置
打开 项目属性 » 设置,如下图:


输入名称,选择类型和范围,输入值保存即完成设置。
类型:int,string,DateTime等各种数据类型;
范围:Application 范围的设置对所有用户都有效;
User 范围的设置对当前用户(当前 Windows 登录的用户)有效,同一个设置
每个用户可以有不同的值,而且互不影响。(把作用范围定义为:User则运行时可更改,
Applicatiion则运行时不可更改。)

2. 读取配置文件(读取应用程序设置)
无论是Application 范围的设置,还是User 范围的设置,读取的方法都是一样的。
读取设置
= ting1;
= tting1;

3. 保存 User 范围配置文件(保存 User 范围的应用程序设置)
保存 User 范围的设置
tting1 = ;
();
User 范围配置文件没有保存在应用程序文件夹下,而是保存在这里:X:Documents
and SettingsWindows登录用户Local SettingsApplication Data。

4. 保存 Application 范围配置文件(保存 Application 范围的应用程序设置)
保存 Application 范围配置文件可没有保存 User 范围配置文件那样简单,直接
() 是不行的。因为 Application 范围的设置在运行
时是“只读”的。这里使用的方法是使用 XmlDocument 来直接保存 config 文件,然后在
Reload 设置。
保存 Applicationi 范围的设置
string configFileame = ablePath +
ument doc = new ument();
(configFileame);
string configString = @
Settingssetting[@name='appSetting1']value
e configode = Singleode(configString);


if (configode != null)
{
ext = ;
(configFileame);
刷新应用程序设置,这样下次读取时才能读到最新的值。
();
}

顺便说一下:使用 () 可以恢复 User 范围设置的默
认值(从 中恢复)。


VS20052008-配置文件(.configSettings)

一、.config设置
ET的应用程序配置文件,使用的是XML格式。相对II文件来说,它的功能要强上
不少,而且具有很强的可扩展性。它的缺点是不能直接进行写操作,也就是说,不能直接在
程序中修改配置文件的数据(当然不是指不能,不过不是本文讨论的范围)。本文主要目的
是探讨如何扩展配置文件,并在其加入各种自定义配置信息。

1. 使用
简单的配置信息,可以直接放入标记中。如:





相应访问代码如下:
string fileame =
t(

2. 自定义配置节(section)名称
比如,我们要使用下面的配置结构,将配置信息归类分组:









Area= Device= Customer=
>



但是光这样子说明是不行的。没有声明,是不能使用自定义的配置段。我们必须要在
配置文件前面加入声明:



type=, System, Ve
rsion=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 >

type=, System, Ver
sion=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 >
type=agSectionHandler, System, Versi
on=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 >



声明和配置的关系,示意图如下:

由图上可以看出,ameValueSectionHandler和DictionarySectionHandler在定
义配置文件的内容形式上是一样的,都是用来设置内容的。只是返回到C#中的类
不太一样,可以参考下面的代码示例。
另外,如果不关心Handler类的版本等信息,可以直接省略。如
ameValueSectionHandler可以直接如下声明:
ueSectionHandler, System

把上面的声明段放入配置文件中,我们的配置结构就可以正常使用
了。声明中,< sectionGroup>用来定义不含配置数据的节的名称。
用来定义
含有自定义配置数据的节的名称。< section type>用来指定定义配置数据的类型。

注意,自定义的配置节,不能使用
来访问,要
使用 fig。

.ET已经定义了3种配置类型:
a. ameValueSectionHandler
相应访问代码如下:
ameValueCollection myameValue= (ameValueCollection)ur
fig(@
string Area = myameValue[
string Device= myameValue[
string Customer = myameValue[

b. DictionarySectionHandler
相应访问代码如下:
Hashtable myameValue= (Hashtable)urationSet
fig(@
string Area = myameValue[
string Device= myameValue[
string Customer = myameValue[

c. SingleTagSectionHandler
相应访问代码如下:


Hashtable myameValue= (Hashtable)urationSet
fig(@
string Area = myameValue[
string Device= myameValue[
string Customer = myameValue[

这三种类型的详细信息,可以参考 MSD 文档。同时.ET 还定义了
IgnoreSectionHandler类型,为 uration 之外的系统所读取和处理的配
置节提供节处理程序定义。
除此之外,.ET提供了IConfigurationSectionHandler接口,这样我们还可以自
行进行扩展,以设计出我们自已的配置形式。

3. 自定义配置结构 (使用IConfigurationSectionHandler)
假设有以下的配置信息,其在MyInfo可以重复许多次,那么应如何读取配置呢?这时就
要使用自定义的配置程序了。





访问代码如下:
Hashtable cfgTable = (Hashtable)fig(
s

( == 2);
Hashtable cfgFuzhou = (Hashtable)cfgTable[
Hashtable cfgShanghai = (Hashtable)cfgTable[
( cfgFuzhou[
( cfgShanghai[
( cfgFuzhou[
( cfgShanghai[

foreach(Hashtable cfg in )
{
ine(
[
}


为了能使用上面的访问代码来访问配置结构,我们需要生成一个特定的配置读取类
(ConfigurationSectionHandler),例子很简单,就不多做说明了:
public class MyInfoSectionHandler: IConfigurationSectionHandler
{
public object Create(object parent, object configContext,
ode section)
{
Hashtable config = new Hashtable();
foreach(Xmlode node in odes)
{
if( !=


throw new urationException(不可识别的配置项


Hashtable item = new Hashtable();
foreach(XmlAttribute attr in utes)
{
switch()
{
case
case
case
(, );
break;
default:
throw new urationException(不可识别的配置
属性
}
}
(item[
}
return config;
}
}


然后,我们再定义配置说明。其中,SectionHandler 是
MyInfoSectionHandler类的带名字空间的完整名称;myApp 则是定义
MyInfoSectionHandler类的程序集不带扩展名的名字(如或):




, myApp >







根据上面的例子,我们可以使用IConfigurationSectionHandler来实现任意的配置文件
结构。






二、gs 设置

可以使用数据网格视图,很方便
在VS 2005中设置和读取配置文件已经变的很简单了,而且是强类型的,读取的值可
以直接赋值给相应的变量,无需强制转换。

1. 在VS 2005中进行应用程序设置
打开 项目属性 » 设置,如下图:


输入名称,选择类型和范围,输入值保存即完成设置。
类型:int,string,DateTime等各种数据类型;
范围:Application 范围的设置对所有用户都有效;
User 范围的设置对当前用户(当前 Windows 登录的用户)有效,同一个设置
每个用户可以有不同的值,而且互不影响。(把作用范围定义为:User则运行时可更改,
Applicatiion则运行时不可更改。)

2. 读取配置文件(读取应用程序设置)
无论是Application 范围的设置,还是User 范围的设置,读取的方法都是一样的。
读取设置
= ting1;
= tting1;

3. 保存 User 范围配置文件(保存 User 范围的应用程序设置)
保存 User 范围的设置
tting1 = ;
();
User 范围配置文件没有保存在应用程序文件夹下,而是保存在这里:X:Documents
and SettingsWindows登录用户Local SettingsApplication Data。

4. 保存 Application 范围配置文件(保存 Application 范围的应用程序设置)
保存 Application 范围配置文件可没有保存 User 范围配置文件那样简单,直接
() 是不行的。因为 Application 范围的设置在运行
时是“只读”的。这里使用的方法是使用 XmlDocument 来直接保存 config 文件,然后在
Reload 设置。
保存 Applicationi 范围的设置
string configFileame = ablePath +
ument doc = new ument();
(configFileame);
string configString = @
Settingssetting[@name='appSetting1']value
e configode = Singleode(configString);


if (configode != null)
{
ext = ;
(configFileame);
刷新应用程序设置,这样下次读取时才能读到最新的值。
();
}

顺便说一下:使用 () 可以恢复 User 范围设置的默
认值(从 中恢复)。

-

VS2005/2008-配置文件(.config/Settings)

发布时间:2022-03-28 12:45:15
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 14 条评论,439人围观)