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

Visual C# 定義與使用自訂屬性 (2):屬性與類別屬性的差異、建立屬性類別

     編輯:關於C語言

屬性 vs 類別屬性

比較項目自訂屬性類別屬性
適用目標組件、類別、方法、參數、欄位等 13 種目標僅限類別/結構成員
儲存位置中繼資料,編譯時期固化執行期實例記憶體,可變更
實例關聯套用於型別定義,所有實例共享相同值屬於特定實例

建立 DefectTrackAttribute

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)]
public class DefectTrackAttribute : Attribute
{
    private string _defectID, _developerID, _defectOrigin, _fixComment;
    private DateTime _modificationDate;

    public DefectTrackAttribute() { }

    public DefectTrackAttribute(string defectID, string modDate, string devID)
    {
        _defectID = defectID;
        _modificationDate = DateTime.Parse(modDate);
        _developerID = devID;
    }

    public string DefectID { get { return _defectID; } }
    public string ModificationDate { get { return _modificationDate.ToShortDateString(); } }
    public string DeveloperID { get { return _developerID; } }
    public string Origin { get { return _defectOrigin; } set { _defectOrigin = value; } }
    public string FixComment { get { return _fixComment; } set { _fixComment = value; } }
}

AttributeUsage 關鍵設定

  • AttributeTargets.Class | AttributeTargets.Method:限定套用目標。
  • AllowMultiple = true:允許同一目標套用多次(記錄多次修改)。
  • Inherited = false (預設):衍生類別不繼承,避免混淆來源。

屬性類別結構

  • 繼承 System.Attribute。
  • 私有欄位儲存資料。
  • 建構函式參數 = 位置參數(必填),唯讀屬性公開。
  • 公開屬性含 set = 命名參數(選填)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved