<configuration>
<configSections>
<section name="test" type="configsections_exampletwo.section_two,configsections_exampletwo"/>
</configSections>
<test>
<UserTwo UserName="luseum" PassWord="134679" ></UserTwo>
</test>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>
internal class section_two : ConfigurationSection {
internal class element_one : ConfigurationElement {
[ConfigurationProperty("UserName")]
public string username {
get {
return (string)this["UserName"];
}
set {
this["UserName"] = value;
}
}
[ConfigurationProperty("PassWord")]
public string password {
get {
return (string)this["PassWord"];
}
//set {
// this["PassWord"] = value;
//}
}
}
[ConfigurationProperty("UserTwo")]
public element_one usertwo {
get {
return (element_one)this["UserTwo"];
}
//set {
// this["UserTwo"] = value;
//}
}
}
1.配置文件:.config
2.本质:XML语言文件
3.从自定义配置文件可以理解:
a.配置文件本身 configuration 查看其定义,实际是一个 元素,它不是XAML语言中的类,更不是Partial 类。
.b.该配置文件实际只是configuration这个元素的文件,实际隐藏了很多其他的程序,比如用来定义configuration这个元素的程序。config实际包含许多其他的东西。
b.元素及部件,可以作为标签。----这点很重要,解释什么时候用tag(标签),什么时候用属性。
c.自定义部件,实际建立对象---并把对象加入 整个配置文件的对象里面成为一个部件-----对象的类必须继承 configuration.ConfigurationSection--表示一个部件
4.配置文件实际两部分组成,一部分:C# ,一部分 config文件。(猜测)
a.编译解析器,解析config文件时,通过反射及特性,解析文件,将解析出来的文件的定义及值,写入C#语言定义(可能,猜测)的对象中,(对象中实际存在dictonary及索引器)
b.自定义部件,属性或则部件时,可以省略 set{},实际存在隐藏(语法糖),编译器会自动添加set{},来使得config文件解析时,写入值。 但是实际c#程序(后面)可能就只能读取值了。
5.config文件与 WPFXAML还是有很大区别的。config应该不存在partial,都是直接添加到对象的dictonary中, 而WPFXAML存在Partial都是直接在类中创建对象,直接更改类本身。