特性是用於在執行時傳遞程式中各種元素行為資訊的宣告性標籤加粗樣式,乙個宣告標籤是通過放置在它所應用的元素前的方括號來描述。
在.net框架裡提供了兩種型別的特性:
預定義特性
自定義特性
[
attributeusage
(attributetargets.class,allowmultiple =
true
,inherited =
true
)]
attributetargets——選擇被指定使用的某種元素(預設all全部)
allowmultiple——bool型別的特性屬性,true為多用,false為單用
inherited——bool型別的特性屬性,true為可被派生類繼承,false為不可
[
conditional
("debug"
)]
常用的conditionsymbol有「debug」和「trace」
[
obsolete
("dont't use oldmethod,use newmethod instead"
,true
)]
.net框架允許建立自定義特性,用於儲存宣告性的資訊,且可以在執行時被檢索。
例子:構建自定義特性
//建立乙個儲存乙個屬性和乙個方法的特性
[attributeusage
(attributetargets.class,allowmultiple =
true
,inherited =
true)]
//特性必須繼承attribute類
public
class
descriptionattribute
:attribute
被構造");
}public
string description
public
void
show()
}
應用自定義特性
[
description
(description =
"這是普通學生")]
public
class
normalstudent
:student
}
利用反射訪問特性
//用於獲取student類中的特性,得到da後執行show方法
public
static
void
managestudent
<
s>
(s student)
where s : student
_");
student.
study()
;//反射
type type = student.
gettype()
;if(type.
isdefined
(typeof
(descriptionattribute)
,true))
}
**記錄乙個通過反射+泛型進行型別轉換的寫法
public
static
void
main
(string
args)
;worker worker =
trans
<
normalstudent
,worker
>
(normal);}
private
static tout trans
<
tin,
tout
>
(tin tin)
return tout;
}
normalstudent 和 worker 是兩個具有相同屬性的類 特性(Attribute)的用處
attribute特性,可以往程式集中寫入一些元資料。微軟類庫中自帶很多 attribute類,某些時候,需要對類標註一下 attribute。那麼自定義 attribute的用處是什麼的,或者說,什麼時候我們需要自定義 attribute。在我看來,自定義attribute沒啥用。常規的專案開發中...
C 特性Attribute學習
起初一直糾結於如何呼叫特性附著在下面那個成員的值,後來發現不需要呼叫,通過反射載入的時候是自動繫結上去的,即 獲得成員物件之後,有乙個方法可以獲得特性標籤。其實從類庫提供者,和類庫使用者的角度,分開來看就很容易理解了。類庫提供者 myclasslib類 myclasslib類有乙個showstrin...
特性(Attribute)的用處
attribute特性,可以往程式集中寫入一些元資料。微軟類庫中自帶很多 attribute類,某些時候,需要對類標註一下 attribute。那麼自定義 attribute的用處是什麼的,或者說,什麼時候我們需要自定義 attribute。在我看來,自定義attribute沒啥用。常規的專案開發中...