首頁 >後端開發 >C++ >如何從 .NET 類別庫中的 app.config 或 web.config 讀取組態設定?

如何從 .NET 類別庫中的 app.config 或 web.config 讀取組態設定?

Linda Hamilton
Linda Hamilton原創
2025-01-19 19:06:09318瀏覽

How to Read Configuration Settings from app.config or web.config in a .NET Class Library?

存取 .NET 類別庫中的設定設定

本指南介紹如何從 .NET 類別庫中的 app.configweb.config 檢索配置設定。 避免使用過時的 ConfigurationSettings.AppSettings.Get() 方法。

首選方法(有警告):

雖然通常建議使用ConfigurationManager.AppSettings["MySetting"],但如果沒有額外的步驟,就無法直接從類別庫項目存取它。

解:

要存取類別庫中的配置設置,請按照以下步驟操作:

  1. 新增引用: 在類別庫項目中加入 System.Configuration 的引用。

  2. 建立自訂部分處理程序: 建立一個繼承自 ConfigurationSectionHandler 的類別並重寫其 Create 方法。此自訂處理程序將允許您存取您的配置部分。

  3. 註冊自訂部分:<configSections>app.config 檔案的 web.config 元素中註冊您的自訂部分。

範例:

假設您想閱讀名為「MySettings」的部分:

自訂部分處理程序(例如 MySettingsHandler.cs):

<code class="language-csharp">using System.Configuration;

public class MySettingsHandler : ConfigurationSectionHandler
{
    public override object Create(object parent, object configContext, System.Xml.XmlNode section)
    {
        var settings = new MySettingsSection();
        //  Populate settings from the XML node (section) here, based on your config structure.  Example below assumes a single string setting.
        settings.MySetting = section.Attributes["mysetting"]?.Value;
        return settings;
    }
}

//  Define a class to hold your settings
public class MySettingsSection
{
    public string MySetting { get; set; }
}</code>

設定檔(app.config 或 web.config):

<code class="language-xml"><configuration>
  <configSections>
    <section name="mySettings" type="MySettingsHandler, YourAssemblyName" />
  </configSections>
  <mySettings mysetting="YourSettingValue" />
</configuration></code>

"YourAssemblyName" 替換為類別庫組件的實際名稱。

存取班級庫中的設定:

<code class="language-csharp">var settings = (MySettingsSection)ConfigurationManager.GetSection("mySettings");
string mySettingValue = settings.MySetting;</code>

這種方法可讓您安全且正確地從 .NET 類別庫存取配置設定。 請記住調整自訂部分處理程序和設定檔以符合您的特定配置結構。

以上是如何從 .NET 類別庫中的 app.config 或 web.config 讀取組態設定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn