c 通過反射獲取類上的自定義特性

2021-07-27 03:31:15 字數 1952 閱讀 7796

下面這個是筆者在以前的乙個專案中用到的。當時是為了在匯出excel報表的時侯,通過自定義特性,包含一些可配置的特性在裡面。具體的操作excel不是本文重點,本文不會多做說明。下面只寫個示例,簡單說明一下如何通過反射獲取自定義特性。示例只在類和屬性上使用了自定義特性。讀者可以按照實際的專案需求,合理使用自定義特性。

1、實現實體自定義特性,繼承自attribute類

//////

自定義特性 屬性或者類可用  支援繼承

///[attributeusage(attributetargets.property 

|attributetargets.class, inherited 

=true

)]public

class

private

string

tablename;

//////

實體實際對應的表名

///public

string

tablename

set}

private

string

columnname;

//////

中文列名

///public

string

columnname

set}}

注釋中我已經寫的很清楚,自定義特性中的屬性乙個是實體實際對應的資料庫表名,乙個是對應的中文列名稱。

2、在實體中使用自定義特性

//////

會員 ,實際的表名叫memberinfo,並不是和實體名一致

///=

"memberinfo

")] 

public

class

member

set}

private

string="

會員註冊名")]

public

string

username

set}

private

string="

會員真實名")]

public

string

realname

set}

private

bool

isactive;

//////

是否活躍  沒有附加自定義屬性

///public

bool

isactive

set}}

3、顯示自定義特性

class

program}}

//取類上的自定義特性

object

objs 

=objtype.getcustomattributes(

typeof

true

);foreach

(object

obj in=

obj 

asif

(attr 

!=null)}

if(string

.isnullorempty(tablename))

console.writeline(

string

.format(

"the tablename of the entity is: 

", tablename));

if(listcolumnname.count 

>0)

}}static

void

main(

string

args)}

ps:在獲取自定義特性的地方,其實就是利用了getcustomattributes方法,這個沒什麼好說的。在實際開發的時候,通過反射的特性可以省卻我們很多繁瑣的事情,真像那句話說的,「反射反射,程式設計師的快樂」。不過,反射的效能問題還是需要格外注意的,比如,今天上午看到老趙的「

attribute操作的效能優化方式」才發現原來還有那麼多內涵。  

c 通過反射獲取類上的自定義特性

cplayerinfo playerinfo new cplayerinfo datatable dt new datatable dt.columns.add 屬性名稱 typeof string dt.columns.add 屬性值 typeof string datarow dr null s...

c 通過反射獲取類上的自定義特性

下面這個是筆者在以前的乙個專案中用到的。當時是為了在匯出excel報表的時侯,通過自定義特性,包含一些可配置的特性在裡面。具體的操作excel不是本文重點,本文不會多做說明。下面只寫個示例,簡單說明一下如何通過反射獲取自定義特性。示例只在類和屬性上使用了自定義特性。讀者可以按照實際的專案需求,合理使...

c 通過反射獲取類上的自定義特性

下面這個是筆者在以前的乙個專案中用到的。當時是為了在匯出excel報表的時侯,通過自定義特性,包含一些可配置的特性在裡面。具體的操作excel不是本文重點,本文不會多做說明。下面只寫個示例,簡單說明一下如何通過反射獲取自定義特性。示例只在類和屬性上使用了自定義特性。讀者可以按照實際的專案需求,合理使...