C 使用反射訪問特性

2021-06-22 08:29:50 字數 1498 閱讀 4771

ms註解:如果沒有檢索自定義特性的資訊和對其進行操作的方法,則定義自定義特性並將其放置在源**中就沒有意義。 

使用反射,可檢索用自定義特性定義的資訊。

主要方法是getcustomattributes,它返回物件陣列,這些物件在執行時等效於源**特性。

此方法具有多個過載版本

例項:

// multiuse 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

*/

ps:前面幾個類是不同attribute的class,最後乙個類是test類,主要是printauthorinfo方法,通過反射,訪問類的attribute,,,

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...