下面這個是筆者在以前的乙個專案中用到的。當時是為了在匯出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不是本文重點,本文不會多做說明。下面只寫個示例,簡單說明一下如何通過反射獲取自定義特性。示例只在類和屬性上使用了自定義特性。讀者可以按照實際的專案需求,合理使...