C#如何創建自定義特性
概述
特性(Attribute)是用於在運行時傳遞程序中各種元素(比如類、方法、結構、枚舉、組件等)的行為信息的聲明性標簽。您可以通過使用特性向程序添加聲明性信息。一個聲明性標簽是通過放置在它所應用的元素前面的方括號([ ])來描述的。要設計你自己的自定義特性,無需掌握許多新的概念。 如果你熟悉面向對象的編程,並且知道如何設計類,那麼你已經具備大部分所需知識。 自定義特性本質上是直接或間接派生自 System.Attribute的傳統類。 與傳統類一樣,自定義特性包含用於存儲和檢索數據的方法。
實現方式
1、聲明自定義特性,一個新的自定義特性應派生自 System.Attribute 類。
// 一個自定義特性 BugFix 被賦給類及其成員 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute
2、構建自定義特性,讓我們構建一個名為 DeBugInfo 的自定義特性,該特性將存儲調試程序獲得的信息。
// 一個自定義特性 BugFix 被賦給類及其成員 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute { private int bugNo; private string developer; private string lastReview; public string message; public DeBugInfo(int bg, string dev, string d) { this.bugNo = bg; this.developer = dev; this.lastReview = d; } public int BugNo { get { return bugNo; } } public string Developer { get { return developer; } } public string LastReview { get { return lastReview; } } public string Message { get { return message; } set { message = value; } } }
3、應用自定義特性
[DeBugInfo(45, "Zara Ali", "12/8/2012", Message = "Return type mismatch")] [DeBugInfo(49, "Nuha Ali", "10/10/2012", Message = "Unused variable")] class Rectangle { // 成員變量 protected double length; protected double width; public Rectangle(double l, double w) { length = l; width = w; } [DeBugInfo(55, "Zara Ali", "19/10/2012", Message = "Return type mismatch")] public double GetArea() { return length * width; } [DeBugInfo(56, "Zara Ali", "19/10/2012")] public void Display() { Console.WriteLine("Length: {0}", length); Console.WriteLine("Width: {0}", width); Console.WriteLine("Area: {0}", GetArea()); } }
以上就是C#如何創建自定義特性的詳細內容,更多關於C#創建自定義特性的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- C# 最基礎知識介紹–多態
- js學習筆記之class類、super和extends關鍵詞
- C# AttributeUsage使用案例詳解
- C#零基礎開發中最重要的概念總結
- 關於C#繼承的簡單應用代碼分析