特性(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屬性類別添加了一個屬性並且在後續的部分中我們會在運行時環境中查尋它。
(未完待續)