首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 配置元件(二):XML 模式實體類別與自動讀寫機制

     編輯:關於C語言

XML 模式實體類別定義


[ConfigurationPattern(TPattern.XML)]
public class MyXMLCfg : Configuration
{
    const string MY_XML_CFG_PATH = @"\myxmlcfg.XML";

    public MyXMLCfg() : base(MY_XML_CFG_PATH)
    {
        m_RandId = new Random().Next();
    }

    private string m_Name;
    private int m_RandId;

    #region Public Properties
    public string Name
    {
        get => m_Name;
        set => m_Name = value;
    }

    [ConfigurationIgnore]
    [XmlIgnore] // 雙重保險:元件層面 + XML 序列化層面
    public int RandId
    {
        get => m_RandId;
        set => m_RandId = value;
    }
    #endregion
}

核心機制:Open/Close 自動持久化

讀取流程

  1. 呼叫 Open()
  2. 元件反射掃描公有屬性
  3. 根據 ConfigurationPattern 選擇序列化器
  4. 反序列化 XML 至屬性
  5. 未在檔案中找到的屬性保留預設值

寫入流程

  1. 屬性值變更(如 cfg.Name = "NewName")
  2. 呼叫 Close()
  3. 元件偵測變更,序列化所有非忽略屬性
  4. 覆寫原配置檔案

進階功能

動態指定檔案路徑


var cfg = new MyXMLCfg();
// 建構後、Open 前任意時刻修改
cfg.FileName = @"C:\Custom\Path\config.xml";
cfg.Open();

唯讀模式


cfg.ReadOnly = true;
cfg.Open();
// 讀取資料...
cfg.Close(); // 不會寫入檔案

XML 序列化屬性協同

[ConfigurationIgnore] 為元件通用忽略標記,[XmlIgnore] 針對 XML 序列化器。雙重標註確保在任何序列化路徑下都不會持久化該欄位。

使用範例


var cfg = new MyXMLCfg();
cfg.Open();
Console.WriteLine($"Name: {cfg.Name}, RandId: {cfg.RandId}");

// 修改配置
cfg.Name = "UpdatedName";
cfg.Close(); // 自動保存至 XML

適用場景

  • 桌面應用程式使用者設定
  • 服務啟動參數配置
  • 多環境部署配置管理
  • 插件系統配置隔離
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved