国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C# 特性(Attribute)入門(一)

2024-07-21 02:19:52
字體:
來源:轉載
供稿:網友
# 特性(attribute)入門(一)

by sadaf alvi 翻譯:cppbug ([email protected])

緒論

特性(attributes)是一種嶄新的聲明性信息。我們不僅可以通過特性來定義設計層面的信息(例如help file, url for documentation)以及運行時(run-time)信息(例如使xml與class相聯系),而且我們還可以利用特性建立自描述(self-describing)組件。在這篇教程中,我們將會看到如何建立和添加特性到各種程序實體以及如何在運行時環境中獲取特性信息。



定義

正如msdn中所描述的那樣-----

“特性是被指定給某一聲明的一則附加的聲明性信息?!?br>


使用預定義(pre-defined)特性

在c#中,有一個小的預定義特性集合。在學習如何建立我們自己的定制特性(custom attributes)之前,我們先來看看在我們的代碼中如何使用預定義特性。



using system;
public class anyclass
{
[obsolete("don't use old method, use new method", true)]
static void old( ) { }

static void new( ) { }

public static void main( )
{
old( );
}
}
我們先來看一下上面這個例子,在這個例子中我們使用了obsolete特性,它標記了一個不應該再被使用的程序實體。第一個參數是一個字符串,它解釋了為什么該實體是過時的以及應該用什么實體來代替它。實際上,你可以在這里寫任何文本。第二個參數告訴編譯器應該把使用這個過時的程序實體當作一種錯誤。它的默認值是false,也就是說編譯器對此會產生一個警告。

當我們嘗試編譯上面這段程序的時候,我們將會得到一個錯誤:

anyclass.old()' is obsolete: 'don't use old method, use new method'


開發定制特性(custom attributes)

現在讓我們來看看如何開發我們自己的特性。

首先我們要從system.attribute派生出我們自己的特性類(一個從system.attribute抽象類繼承而來的類,不管是直接還是間接繼承,都會成為一個特性類。特性類的聲明定義了一種可以被放置在聲明之上新的特性)。

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特性類添加了一個屬性并且在后續的部分中我們會在運行時環境中查尋它。







(未完待續)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜川市| 久治县| 吐鲁番市| 高州市| 武山县| 大理市| 阿尔山市| 锦屏县| 阿巴嘎旗| 丁青县| 乐至县| 黎平县| 咸宁市| 常德市| 句容市| 青浦区| 彭阳县| 同仁县| 广宗县| 岳阳市| 长宁县| 兴仁县| 台江县| 府谷县| 丁青县| 罗甸县| 灌南县| 页游| 白城市| 灵璧县| 兴隆县| 班戈县| 上栗县| 丰台区| 田东县| 张家口市| 祥云县| 澄迈县| 绥阳县| 龙口市| 章丘市|