西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)C#.NET → .NET開發(fā)中的自定義配置文件Configuration 詳細介紹

.NET開發(fā)中的自定義配置文件Configuration 詳細介紹

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2012/11/28 21:38:46字體大。A-A+

作者:西西點擊:0次評論:0次標簽: .NET開發(fā)

  • 類型:編程工具大小:7.2M語言:中文 評分:3.3
  • 標簽:
立即下載

說起.NET的配置文件,.NET的開發(fā)人員無人不知,無人不用,如下面的配置節(jié)點,基本上每個.NET開發(fā)的項目都會出現(xiàn)像下面的配置,出現(xiàn)在App.config或者Web.config中

<connectionStrings>
    <add name="DbConnectionString" connectionString="...."/>
</connectionStrings>
<apPSettings>
    <add key="LogFilePath" value="c:/Logs/"/>
</appsettings>

一般的項目用NET提供的配置節(jié)點就已經(jīng)夠用了,但是如果項目的配置文件很多很多,appSettings就會出現(xiàn)大量的配置,基本上都是key和value的組合,如果再加上命名不易讀,維護就會很麻煩,又或者你自己寫了一個框架給別人用,需要定義符合自己的配置節(jié)點,所以有些時候我們需要自定義一些配置.

其實NET已經(jīng)提供了自定義配置的基類和一些接口,對創(chuàng)建自定義的配置已經(jīng)非常方便了,下面就開始做幾個簡單的實例吧

1. 創(chuàng)建一個控制臺的項目 CustomConfigurationDemo,添加App.Config并且引用System.configuration dll

2. 創(chuàng)建 CustomConfigurationFirst類繼承ConfigurationSection,添加屬性long Id, string Name,string FirstProperty,并且通過ConfigurationPropertyAttribute標記屬性,第一個字符串為 配置文件中配置的屬性名,DefaultValue為默認值,其他屬性就不一一介紹了,可以參考ConfigurationPropertyAttribute的注釋信息。

public class CustomConfigurationFirst : ConfigurationSection
    {
        private static CustomConfigurationFirst setting;
        public static CustomConfigurationFirst Setting
        {
            get
            {
                if(setting == null)
                    setting = (CustomConfigurationFirst)ConfigurationManager.GetSection("firstCustomConfiguration");
                return setting;
            }
        }

        [ConfigurationProperty("id", DefaultValue = "1", IsRequired = true)]
        public long Id
        {
            get { return (long)this["id"]; }
            set { this["id"] = value; }
        }

        [ConfigurationProperty("name", DefaultValue = "Lily", IsRequired = true)]
        public string Name
        {
            get { return (string)this["name"]; }
            set { this["name"] = value; }
        }

        [ConfigurationProperty("firstProperty", DefaultValue = "Property1", IsRequired = true)]
        public string FirstProperty
        {
            get { return (string)this["firstProperty"]; }
            set { this["firstProperty"] = value; }
        }
    }

我們自定義的配置創(chuàng)建好了,現(xiàn)在需要添加配置到App.config文件中,如下圖所示,首先需要創(chuàng)建configSections,把自定義的節(jié)點加進去,name隨便填寫(填寫的值將會與代碼中的ConfigurationManager.GetSection("firstCustomConfiguration")名稱對應(yīng)),type需要填寫自定義配置節(jié)點類的全名稱和程序集

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="firstCustomConfiguration" type="CustomConfigurationDemo.CustomConfigurationFirst,CustomConfigurationDemo"/>
  </configSections>

  <firstCustomConfiguration id="12" name="name" firstProperty="property2"/>
 
</configuration>

一切準備就緒,用控制臺程序打印出我們剛剛配置的屬性看看吧!

Console.WriteLine("----CustomConfigurationFirst---------------------");
CustomConfigurationFirst settingFirst = CustomConfigurationFirst.Setting;
Console.WriteLine("settingFirst.Id:" + settingFirst.Id);
Console.WriteLine("settingFirst.Name:" + settingFirst.Name);
Console.WriteLine("settingFirst.FirstProperty"+ settingFirst.FirstProperty);
Console.WriteLine("--------------------------------------------------");

運行結(jié)果如下,和我們配置文件中設(shè)置的值一樣,是不是感覺很簡單。

3. 有時候我們需要在配置文件中加一些子節(jié)點,應(yīng)該怎么做呢?

先創(chuàng)建一個 UrlConfigurationElement:ConfigurationElement,在ConfigurationElement里面添加屬性和在Section里面添加是一樣的,然后我們創(chuàng)建一個CustomConfigurationSecond : ConfigurationSection,并創(chuàng)建一個屬性的類型是UrlConfigurationElement的,如下圖所示:

[ConfigurationProperty("url")]
public UrlConfigurationElement UrlElement
{
      get { return (UrlConfigurationElement)this["url"]; }
      set { this["url"] = value; }
}

 此時配置文件添加的配置為:

<secondCustomConfiguration>
    <url name="baidu" url="http://www.baidu.com" />
</secondCustomConfiguration>

 然后通過代碼獲取配置屬性:

 Console.WriteLine("----CustomConfigurationSecond---------------------");
 CustomConfigurationSecond settingSecond = CustomConfigurationSecond.Setting;
 Console.WriteLine("settingSecond.UrlElement.Name:" + settingSecond.UrlElement.Name);
 Console.WriteLine("settingSecond.UrlElement.Url:" + settingSecond.UrlElement.Url);
 Console.WriteLine("--------------------------------------------------");

輸出結(jié)果為:與配置文件一樣

4. 以上是創(chuàng)建一個配置節(jié)點的情況,假如我們修改配置為

<secondCustomConfiguration>
    <url name="baidu" url="http://www.baidu.com" />
    <url name="google" url="http://www.google.com" />
</secondCustomConfiguration>

 此時就會報錯 “元素 <url> 只能在此節(jié)中出現(xiàn)一次!痹趺礃有薷哪苤С稚鲜龅那闆r呢?

NET為我們提供了ConfigurationElementCollection,創(chuàng)建UrlConfigurationElementCollection繼承ConfigurationElementCollection,并且實現(xiàn)2個抽象方法

public class UrlConfigurationElementCollection : ConfigurationElementCollection
    {

        protected override ConfigurationElement CreateNewElement()
        {
            return new UrlConfigurationElement();
        }

        protected override object GetElementKey(ConfigurationElement element)
        {
            return ((UrlConfigurationElement)element).Name;
        }
    }

創(chuàng)建CustomConfigurationThird : ConfigurationSection

[ConfigurationProperty("urls")]
[ConfigurationCollection(typeof(UrlConfigurationElementCollection),AddItemName = "addUrl",ClearItemsName = "clearUrls", RemoveItemName = "RemoveUrl")]
public UrlConfigurationElementCollection UrlElements
{
     get { return (UrlConfigurationElementCollection)this["urls"]; }
     set { this["urls"] = value; }
}

配置文件為

<thirdCustomConfiguration>
    <urls>
      <addUrl name="google" url="http://www.google.com" />
      <addUrl name="sina" url="http://www.sina.com" />
      <addUrl name="360buys" url="http://www.360buys.com" />
    </urls>
</thirdCustomConfiguration>

 輸出結(jié)果為:

好了,這次就簡單的介紹下自定義配置的入門,其實NET提供了很多其他復(fù)雜的功能,沒有特別需求的話以上的三種自定義配置基本上就夠用了,我感覺是這樣的,

想深入研究的話參考MSDN。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)