|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。程序1.设置文件概述:
使用程序设置文件是尺度的XML文件,XML标志和属性是辨别巨细写的。它是能够按必要变动的,开辟职员可使用设置文件来变动设置,而不用重编译使用程序。设置文件的根节点是configuration。我们常常会见的是appSettings,它是由.Net预界说设置节。我们常常利用的设置文件的架构是象上面的情势。先也许有个印象,经由过程前面的实例会有一个对照分明的熟悉。上面的“设置节”能够了解为举行设置一个XML的节点。
罕见设置文件形式:
<configuration>
<configSections>//设置节声明地区,包括设置节和定名空间声明
<section>//设置节声明
<sectionGroup>//界说设置节组
<section>//设置节组中的设置节声明
<appSettings>//预界说设置节
<Customelementforconfigurationsection>//设置节设置地区
2.只要appSettings节的设置文件及会见办法
上面是一个最多见的使用程序设置文件的例子,只要appSettings节。
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<appSettings>
<addkey="connectionstring"value="UserID=sa;DataSource=.;Password=;InitialCatalog=test;Provider=SQLOLEDB.1;"/>
<addkey="TemplatePATH"value="Template"/>
</appSettings>
</configuration>
上面来看看如许的设置文件怎样办法。
string_connectionString=ConfigurationSettings.AppSettings["connectionstring"];
利用ConfigurationSettings类的静态属性AppSettings就能够间接办法设置文件中的设置信息。这个属性的范例是NameValueCollection。
3.自界说设置文件
3.1 自界说设置节
一个用户自界说的设置节,在设置文件平分为两部分:一是在<configSections></configSections>设置节中声明设置节(下面设置文件形式中的“<section>”),别的是在<configSections></configSections>以后设置设置节(下面设置文件形式中的“<Customelementforconfigurationsection>”),有点相似一个变量先声明,后利用一样。声明一个设置文件的语句以下:
<sectionname=""type=""/>
<section>:声明新设置节,便可创立新设置节。
name:自界说设置节的称号。
type:自界说设置节的范例,次要包含System.Configuration.SingleTagSectionHandler、System.Configuration.DictionarySectionHandler、System.Configuration.NameValueSectionHandler。
分歧的type不仅设置设置节的体例纷歧样,最初会见设置文件的操纵上也有差别。上面我们就举一个设置文件的例子,让它包括这三个分歧的type。
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<configSections>
<sectionname="Test1"type="System.Configuration.SingleTagSectionHandler"/>
<sectionname="Test2"type="System.Configuration.DictionarySectionHandler"/>
<sectionname="Test3"type="System.Configuration.NameValueSectionHandler"/>
</configSections>
<Test1setting1="Hello"setting2="World"/>
<Test2>
<addkey="Hello"value="World"/>
</Test2>
<Test3>
<addkey="Hello"value="World"/>
</Test3>
</configuration>
我们对下面的自界说设置节举行申明。在声明部分利用<sectionname="Test1"type="System.Configuration.SingleTagSectionHandler"/>声了然一个设置节它的名字叫Test1,范例为SingleTagSectionHandler。在设置设置节部分利用<Test1setting1="Hello"setting2="World"/>设置了一个设置节,它的第一个设置的值是Hello,第二个值是World,固然还能够有更多。别的的两个设置节和这个相似。
上面我们看在程序中怎样会见这些自界说的设置节。我们用过ConfigurationSettings类的静态办法GetConfig来猎取自界说设置节的信息。
publicstaticobjectGetConfig(stringsectionName);
上面是会见这三个设置节的代码:
//会见设置节Test1
IDictionaryIDTest1=(IDictionary)ConfigurationSettings.GetConfig("Test1");
stringstr=(string)IDTest1["setting1"]+""+(string)IDTest1["setting2"];
MessageBox.Show(str);//输入HelloWorld
//会见设置节Test1的办法2
string[]values1=newstring[IDTest1.Count];
IDTest1.Values.CopyTo(values1,0);
MessageBox.Show(values1[0]+""+values1[1]);//输入HelloWorld
//会见设置节Test2
IDictionaryIDTest2=(IDictionary)ConfigurationSettings.GetConfig("Test2");
string[]keys=newstring[IDTest2.Keys.Count];
string[]values=newstring[IDTest2.Keys.Count];
IDTest2.Keys.CopyTo(keys,0);
IDTest2.Values.CopyTo(values,0);
MessageBox.Show(keys[0]+""+values[0]);
//会见设置节Test3
NameValueCollectionnc=(NameValueCollection)ConfigurationSettings.GetConfig("Test3");
MessageBox.Show(nc.AllKeys[0].ToString()+""+nc["Hello"]);//输入HelloWorld
经由过程下面的代码我们能够看出,分歧的type经由过程GetConfig前往的范例分歧,详细取得设置内容的体例也纷歧样。设置节处置程序
前往范例
SingleTagSectionHandler
Systems.Collections.IDictionary
DictionarySectionHandler
Systems.Collections.IDictionary
NameValueSectionHandler
Systems.Collections.Specialized.NameValueCollection
3.2 自界说设置节组
设置节组是利用<sectionGroup>元素,将相似的设置节分到统一个组中。设置节组声明部分将创立设置节的包括元素,在<configSections>元素中声明设置节组,并将属于该组的节置于<sectionGroup>元素中。上面是一个包括设置节组的设置文件的例子:
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroupname="TestGroup">
<sectionname="Test"type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections>
<TestGroup>
<Test>
<addkey="Hello"value="World"/>
</Test>
</TestGroup>
</configuration>
上面是会见这个设置节组的代码:
NameValueCollectionnc=(NameValueCollection)ConfigurationSettings.GetConfig("TestGroup/Test");
MessageBox.Show(nc.AllKeys[0].ToString()+""+nc["Hello"]);//输入HelloWorld
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 |
|