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

C# 配置元件(三):INI 實體類別完整定義與屬性映射詳解

     編輯:關於C語言

完整實體類別程式碼


using System;
using ConfigurationPattern;
using ConfigurationPattern.Patterns;

namespace CfgSample
{
    [ConfigurationPattern(TPattern.INI, "DefaultSection")]
    class MyIniCfg : Configuration
    {
        const string MY_INI_CFG_PATH = @"\myXMLcfg.ini";

        public MyIniCfg() : base(MY_INI_CFG_PATH)
        {
            m_RandId = new Random().Next();
        }

        private string m_Name;
        private byte m_Age;
        private int m_RandId;
        private string m_ClassName;
        private uint m_Year;

        #region Public Properties
        [Section("PrivateInfo")]
        public string Name
        {
            get => m_Name;
            set => m_Name = value;
        }

        [Section("PrivateInfo")]
        [Key("Age", 18)]
        public byte Age
        {
            get => m_Age;
            set => m_Age = value;
        }

        [Section("ClassInfo")]
        [Key("Class")]
        public string ClassName
        {
            get => m_ClassName;
            set => m_ClassName = value;
        }

        [Section("ClassInfo")]
        [Key("Year", 1945)]
        public uint Year
        {
            get => m_Year;
            set => m_Year = value;
        }

        [ConfigurationIgnore]
        public int RandId
        {
            get => m_RandId;
            set => m_RandId = value;
        }
        #endregion
    }
}

關鍵映射規則解析

Section 分組機制

  • Name、Age 歸屬 [PrivateInfo] 區段
  • ClassName、Year 歸屬 [ClassInfo] 區段
  • 未標註 [Section] 的屬性自動歸入建構式指定的 DefaultSection

Key 精確控制

屬性INI 鍵名預設值說明
NameNamenull未指定 Key,採用屬性名
AgeAge18明確指定預設值
ClassNameClassnull自訂鍵名異於屬性名
YearYear1945數值型別預設值

ConfigurationIgnore 排除機制

RandId 標記為忽略,不會出現在 INI 檔案中,適合:

  • 運行時計算產生的值
  • 敏感資訊(Token、密碼)
  • 暫存狀態資料

生成的 INI 檔案結構


[PrivateInfo]
Name=John
Age=25

[ClassInfo]
Class=ComputerScience
Year=2023

[DefaultSection]
; 其他未分組屬性

型別支援範圍

元件內建支援所有基元型別(int, byte, uint, string, bool 等),複雜型別可透過 TypeConverter 或自訂序列化擴展。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved