特性(Attributes)是一種嶄新的聲明性信息。我們不僅可以通過特性來定義設計層面的信息(例如help file, URL for documentation)以及運行時(run-time)信息(例如使XML與class相聯系),而且我們還可以利用特性建立自描述(self-describing)組件。在這篇教程中,我們將會看到如何建立和添加特性到各種程序實體以及如何在運行時環境中獲取特性信息。
using System; public class HelpAttribute : Attribute { } 不管你是否相信,我們已經建立了一個定制特性,現在我們可以用它來裝飾現有的類就好像上面我們使用Obsolete attribute一樣。
[Help()] public class AnyClass { } 注意:對一個特性類名使用Attribute後綴是一個慣例。然而,當我們把特性添加到一個程序實體,是否包括Attribute後綴是我們的自由。編譯器會首先在System.Attribute的派生類中查找被添加的特性類。如果沒有找到,那麼編譯器會添加Attribute後綴繼續查找。
到目前為止,這個特性還沒有起到什麼作用。下面我們來添加些東西給它使它更有用些。
using System; public class HelpAttribute : Attribute { public HelpAttribute(String Descrition_in) { this.description = Description_in; } protected String description; public String Description { get { return this.description;
} } } [Help("this is a do-nothing class")] public class AnyClass { } 在上面的例子中,我們給HelpAttribute特性類添加了一個屬性並且在後續的部分中我們會在運行時環境中查尋它。