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

C# 屬性類別的核心概念與實戰範例(一)

     編輯:關於C語言

許多 C# 初學者對「屬性」感到陌生,實際上它是 .NET 執行期中繼資料的核心機制。微軟官方文件(System.Attribute)有詳細說明,本文透過直觀範例快速建立概念。

屬性即類別,非關鍵字

方括號 [...] 中的語法本質上是呼叫屬性類別的建構函式。屬性類別繼承自 System.Attribute,因此它們在執行期就是普通物件,可透過反射取得實例並檢查其屬性值。這意味著屬性的行為不僅限於編譯期,更可在執行期動態決定邏輯。

內建屬性實戰:DefaultEvent 改變設計器行為

Windows Forms 中,雙擊表單預設會導向 Load 事件,按鈕則導向 Click。這行為由 [DefaultEvent] 屬性控制。以下範例示範如何自訂預設事件:

[DefaultEvent("FormClosed")]
public partial class Form1 : Form { ... }

public partial class Form2 : Form1 { ... }

當在設計器中雙擊 Form2 時,Visual Studio 會直接產生 Form2_FormClosed 事件處理常式,而非預設的 Form2_Load。這證明屬性能影響開發工具與執行期框架的行為。

屬性可修飾的目標

屬性可套用於:類別、結構、介面、委派、列舉、欄位、屬性、方法、建構函式、事件、參數、回傳值、組件、模組、型別參數等。透過 AttributeUsage 可精確限制適用範圍。

自訂屬性的基本步驟

  1. 建立繼承 System.Attribute 的類別。
  2. 定義建構函式與公開屬性/欄位儲存資料。
  3. (選擇性) 以 [AttributeUsage] 限制目標與重複規則。
  4. 在目標程式碼元素上方加上 [MyAttribute(...)]。
  5. 執行期使用 MemberInfo.GetCustomAttributes() 讀取並驅動邏輯。

為何掌握屬性至關重要?

  • 框架擴充點:ASP.NET Core、Entity Framework、xUnit 等皆大量使用屬性作為擴充點。
  • 程式碼產生/分析:Roslyn Source Generators 依賴屬性標記產生目標。
  • 配置驅動開發:以屬性取代 XML/JSON 設定檔,享受型別安全與 IntelliSense。

理解屬性「本質是類別、執行期可反射」這一核心觀念,是邁向進階 .NET 開發的關鍵一步。

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