天天看點

.Net 應用程式config的配置

檔案的目錄(若要對config配置檔案進行操作,需要添加對

.Net 應用程式config的配置

的引用)

.Net 應用程式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 等節點的聲明,是以不是不用聲明,是預設已經聲明好了。

繼續閱讀