新聞中心
C# Attribute的概念是什么呢?我們經(jīng)常在C#實際開發(fā)中遇到C# Attribute的使用,那么對于這一具體的細(xì)節(jié)我們需要知道什么才能掌握好C# Attribute呢?那么下面我們來具體的看看。

公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出梁園免費做網(wǎng)站回饋大家。
C# Attribute的概念
C# Attribute是一種嶄新的聲明性信息。我們不僅可以通過特性來定義設(shè)計層面的信息(例如help file, URL for documentation)以及運行時(run-time)信息(例如使XML與class相聯(lián)系),而且我們還可以利用特性建立自描述(self-describing)組件。在這篇教程中,我們將會看到如何建立和添加特性到各種程序?qū)嶓w以及如何在運行時環(huán)境中獲取特性信息。
C# Attribute的定義
MSDN中所描述的:“特性是被指定給某一聲明的一則附加的聲明性信息?!?/p>
C# Attribute的定義之使用預(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'
C# Attribute的定義開發(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)境中查尋它。
C# Attribute的相關(guān)內(nèi)容就向你介紹到這里,希望對你了解和學(xué)習(xí)C# Attribute有所幫助。
【編輯推薦】
- 簡析散列算法在C# 加密中的應(yīng)用
- RSA實現(xiàn)C# 加密詳解
- 詳解TripleDES實現(xiàn)C# 加密操作
- 淺析C# WinForm控件開發(fā)前期準(zhǔn)備
- 詳解C# WinForm自定義控件的使用和調(diào)試
網(wǎng)頁名稱:C# Attribute的概念與使用淺析
文章轉(zhuǎn)載:http://m.5511xx.com/article/cogpgcc.html


咨詢
建站咨詢
