ms註解:如果沒有檢索自定義特性的資訊和對其進行操作的方法,則定義自定義特性並將其放置在源**中就沒有意義。
使用反射,可檢索用自定義特性定義的資訊。
主要方法是getcustomattributes,它返回物件陣列,這些物件在執行時等效於源**特性。
此方法具有多個過載版本
例項:
// multiuse attribute.ps:前面幾個類是不同attribute的class,最後乙個類是test類,主要是printauthorinfo方法,通過反射,訪問類的attribute,,,[system.attributeusage(system.attributetargets.class |
system.attributetargets.struct,
allowmultiple = true) // multiuse attribute.
]public
class author : system.attribute
public
string getname()
}// class with the author attribute.
[author("p. ackerman")]
public
class firstclass
// class without the author attribute.
public
class secondclass
// class with multiple author attributes.
[author("p. ackerman"), author("r. koch", version = 2.0)]
public
class thirdclass
class testauthorattribute
private
static
void printauthorinfo(system.type t)
", t);
// using reflection.
system.attribute attrs = system.attribute.getcustomattributes(t); // reflection.
// displaying output.
foreach (system.attribute attr in attrs)
, version ", a.getname(), a.version);}}
}}/* output:
author information for firstclass
p. ackerman, version 1.00
author information for secondclass
author information for thirdclass
r. koch, version 2.00
p. ackerman, version 1.00
*/
C 使用反射特性構建訪問者模式
出自 c 3.0設計模式 兩個結構的物件 class element public element part public element public element element next class elementwithlink element 與反射相關的核心 abstract clas...
C 使用反射特性構建訪問者模式
出自 c 3.0設計模式 兩個結構的物件 class element public element part public element public element element next class elementwithlink element 與反射相關的核心 abstract clas...
C 反射,特性結合使用
using system using system.reflection using system.collections.generic using system.linq using system.text using system.threading.tasks model dbtablena...