人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

C# 特征(Attribute)基礎(chǔ)(一)

C# 特征(Attribute)基礎(chǔ)(一)

更新時間:2022-06-29 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

# 特性(Attribute)入門(一)

By sadaf alvi 翻譯:cppbug (itwizard@163.com)

緒論

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



定義

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

“特性是被指定給某一聲明的一則附加的聲明性信息。”



使用預(yù)定義(Pre-defined)特性

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



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特性,它標(biāo)記了一個不應(yīng)該再被使用的程序?qū)嶓w。第一個參數(shù)是一個字符串,它解釋了為什么該實體是過時的以及應(yīng)該用什么實體來代替它。實際上,你可以在這里寫任何文本。第二個參數(shù)告訴編譯器應(yīng)該把使用這個過時的程序?qū)嶓w當(dāng)作一種錯誤。它的默認(rèn)值是false,也就是說編譯器對此會產(chǎn)生一個警告。

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

AnyClass.Old()' is obsolete: 'Don't use Old method, use New method'


開發(fā)定制特性(custom attributes)

現(xiàn)在讓我們來看看如何開發(fā)我們自己的特性。

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

using System;
public class HelpAttribute : Attribute
{
}
不管你是否相信,我們已經(jīng)建立了一個定制特性,現(xiàn)在我們可以用它來裝飾現(xiàn)有的類就好像上面我們使用Obsolete attribute一樣。

[Help()]
public class AnyClass
{
}
注意:對一個特性類名使用Attribute后綴是一個慣例。然而,當(dāng)我們把特性添加到一個程序?qū)嶓w,是否包括Attribute后綴是我們的自由。編譯器會首先在System.Attribute的派生類中查找被添加的特性類。如果沒有找到,那么編譯器會添加Attribute后綴繼續(xù)查找。



到目前為止,這個特性還沒有起到什么作用。下面我們來添加些東西給它使它更有用些。

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







(未完待續(xù))

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 武城县| 布拖县| 曲松县| 渝北区| 蚌埠市| 洞头县| 长寿区| 鹿邑县| 肇庆市| 临海市| 遂昌县| 黎平县| 吉首市| 怀来县| 湟源县| 尖扎县| 甘孜| 武宁县| 尼玛县| 滨海县| 隆回县| 芮城县| 汕尾市| 通山县| 海晏县| 米脂县| 保定市| 四平市| 大宁县| 元氏县| 综艺| 城步| 乌鲁木齐县| 安达市| 津南区| 普格县| 土默特左旗| 大石桥市| 廊坊市| 民县| 镇江市|