檔案的目錄(若要對config配置檔案進行操作,需要添加對
的引用)
調用方式
//擷取配置節資料
var obj= System.Configuration.ConfigurationManager.GetSection("myConfigSection");
1.App.config 檔案
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--自定義配置節聲明 type="命名空間.類名,程式集名稱"-->
<section name="myConfigSection" type="MyLibNameSpace.MyConfSection,MyLib"/>
</configSections>
<!--自定義配置節主體-->
<myConfigSection attrNo="1000" attrName="apple" attrInfo="hello section!">
<myChild childNo="1001" childName="lili"></myChild>
</myConfigSection>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
2.MyConfSection.cs
namespace MyLibNameSpace
{
public class MyConfSection : ConfigurationSection //必須繼承 ConfigurationSection
{
[ConfigurationProperty("attrNo")] //聲明屬性名稱,必須寫,否則編譯不報錯但是執行報錯,這個代碼應該是執行的時候發揮作用
public virtual string attrNo
{
get
{
return (string)this["attrNo"];//此得益于父類的索引器
}
set
{
this["attrNo"] = value;
}
}
[ConfigurationProperty("attrName")]
public virtual string attrName
{
get
{
return (string)this["attrName"];//此得益于父類的索引器
}
set
{
this["attrName"] = value;
}
}
[ConfigurationProperty("attrInfo")]
public virtual string attrInfo
{
get
{
return (string)this["attrInfo"];//此得益于父類的索引器
}
set
{
this["attrInfo"] = value;
}
}
[ConfigurationProperty("myChild")]
public virtual MyConfChild MyChild
{
get
{
return (MyConfChild)this["myChild"];//此得益于父類的索引器
}
set
{
this["myChild"] = value;
}
}
}
}
3.MyConfChild.cs
namespace MyLibNameSpace
{
public class MyConfChild : ConfigurationElement
{
[ConfigurationProperty("childNo")]
public virtual string childNo
{
get {
return (string)this["childNo"];//此得益于父類的索引器
}
set {
this["childNo"] = value;
}
}
[ConfigurationProperty("childName")]
public virtual string childName
{
get
{
return (string)this["childName"];//此得益于父類的索引器
}
set
{
this["childName"] = value;
}
}
}
}
PS:有的配置節點為什麼沒有在<configSections></configSections> 裡面聲明就可以直接使用?
回答:
在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config裡有一個machine.config檔案, 裡面包含常用的appSettings 等節點的聲明,是以不是不用聲明,是預設已經聲明好了。