Attribute 在.NET程式設計中的應用(二) (轉)
Attribute在中的應用(二)
.NET 中對Attribute的支援是一個全新的功能,這種支援來自它的Attribute類。在你的中適當地使用這個類,或者是靈活巧妙地利用這個類,將使你的程式獲得某種在以往程式設計中很難做到的能力。我們來看一個例子:
假如你是一個專案開發小組中的成員,你想要跟蹤專案程式碼檢查的資訊,通常你可以把程式碼的檢查資訊儲存在中以便查詢;或者把資訊寫到程式碼的註釋裡面,這樣可以閱讀程式碼的同時看到程式碼被檢查的資訊。我們知道.NET的是自描述的,那麼是否可以讓程式碼自己來描述它被檢查的資訊呢?這樣我們既可以將資訊和程式碼儲存在一起,又可以透過程式碼的自我描述得到資訊。答案就是使用Attribute.
下面的步驟和程式碼告訴你怎麼做:
首先,我們建立一個自定義的Attribute,並且事先設定我們的Attribute將施加在class的元素上面以獲取一個類程式碼的檢查資訊。
using System; using System.Reflection; [AttributeUsage(AttributeTargets.Class)] //還記得上一節的內容嗎? public class CodeReviewAttribute : System.Attribute //定義一個CodeReview的Attribute { private string reviewer; //程式碼檢查人 private string date; //檢查日期 private string comment; //檢查結果資訊 //引數構造器 public CodeReviewAttribute(string reviewer, string date) { this.reviewer=reviewer; this.date=date; } public string Reviewer { get { return reviewer; } } public string Date { get { return date; } } public string Comment { get { return comment; } set { comment=value; } } }
我們的自定義CodeReviewAttribute同普通的類沒有區別,它從Attribute派生,同時透過AttributeUsage表示我們的Attribute僅可以施加到類元素上。
第二步就是使用我們的CodeReviewAttribute, 假如我們有一個Jack寫的類MyClass,檢查人Niwalker,檢查日期年7月9日,於是我們施加Attribute如下:
[CodeReview("Niwalker","2003-7-9",Comment="Jack的程式碼")] public class MyClass { //類的成員定義 }
當這段程式碼被編譯的時候,會CodeReviewAttribute的構造器並且把"Niwalker"和"2003-7-9"分別作為構造器的引數。注意到參數列中還有一個Comment屬性的賦值,這是Attribute特有的方式,這裡你可以設定更多的Attribute的公共屬性(如果有的話),需要指出的是.NET Framework1.0允許向private的屬性賦值,但在.NET Framework1.1已經不允許這樣做,只能向public的屬性賦值。
第三步就是取出我們需要的資訊,這是透過.NET的反射來實現的,關於反射的知識,限於篇幅我不打算在這裡進行說明,也許我會在以後另外寫一篇介紹反射的文章。
class test { static void Main(string[] args) { System.Reflection.MemberInfo info=typeof(MyClass); //透過反射得到MyClass類的資訊 //得到施加在MyClass類上的定製Attribute CodeReviewAttribute att= (CodeReviewAttribute)Attribute.GetCustomAttribute(info,typeof(CodeReviewAttribute)); if(att!=null) { Console.WriteLine("程式碼檢查人:{0}",att.Reviewer); Console.WriteLine("檢查時間:{0}",att.Date); Console.WriteLine("註釋:{0}",att.Comment); } } }
在上面這個例子中,Attribute扮演著向一個類新增額外資訊的角色,它並不影響MyClass類的行為。透過這個例子,我們大致可以知道如何寫一個自定義的Attribute,以及如何在應用程式使用它。下一節,我將介紹如何使用Attribute來自動生成的資料訪問類的程式碼。(待續)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982752/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Attribute在.net程式設計中的應用(一) (轉)程式設計
- Attribute在.NET程式設計中的應用(四) (轉)程式設計
- Attribute在.NET程式設計中的應用(五) (轉)程式設計
- Attribute在.NET程式設計中的應用(三) (轉)程式設計
- Attribute在.NET程式設計的應用(六) (轉)程式設計
- Vector在Java程式設計中的應用 (轉)Java程式設計
- 設計模式在vue中的應用(二)設計模式Vue
- socket程式設計在TCP中的應用程式設計TCP
- .NET Attribute在資料校驗上的應用
- 雙緩衝在畫板程式中的應用(二) (轉)
- VB.net中HOOK的應用(二) (轉)Hook
- [譯] 設計 QA 在應用程式設計中的重要性程式設計
- .Net 中的反應式程式設計程式設計
- 在ASP.NET中物件導向的程式設計思想 (轉)ASP.NET物件程式設計
- 用例設計在軟體開發專案計劃中的應用(轉)
- 函數語言程式設計及其在react中的應用函數程式設計React
- 設計模式及其在spring中的應用(含程式碼)設計模式Spring
- 設計模式在vue中的應用(六)設計模式Vue
- 設計模式在vue中的應用(七)設計模式Vue
- 設計模式在vue中的應用(五)設計模式Vue
- 設計模式在vue中的應用(三)設計模式Vue
- 設計模式在vue中的應用(四)設計模式Vue
- 設計模式在vue中的應用(一)設計模式Vue
- 設計模式,及在Java中的應用設計模式Java
- union 的概念及在嵌入式程式設計中的應用程式設計
- State模式在J2ME遊戲設計中的應用(轉)模式遊戲設計
- 非Access資料庫在VB的程式設計及應用 (轉)資料庫程式設計
- .net core 中的經典設計模式的應用設計模式
- ADO程式設計應用 (轉)程式設計
- 聯合體在微控制器程式設計中的應用程式設計
- 在netweaver中建立應用程式客戶端客戶端
- 設計模式在 TypeScript 中的應用 – 策略模式設計模式TypeScript
- IR在IS需求分析與設計中的應用
- 實踐ORM,建立基於Grove的.NET應用程式(二) (轉)ORM
- .NET應用程式管理服務AMS設計
- Thunk程式的實現原理以及在iOS中的應用(二)iOS
- AOP程式設計之AspectJ介紹及在Android中的應用程式設計Android
- 從一個問題中瞭解數學在程式設計中的應用程式設計