国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

反射實(shí)踐積累

2019-11-17 03:05:12
字體:
供稿:網(wǎng)友

反射實(shí)踐積累

背景

在一個(gè)服務(wù)實(shí)現(xiàn)內(nèi),有很多結(jié)構(gòu)相似,略微不同的函數(shù)。

Martin大師的諄諄告誡我們,可以使用Extract Method的方式進(jìn)行重構(gòu)。

本次練習(xí)的內(nèi)容主要是使用反射。

以零散知識(shí)點(diǎn)的形式記錄每一天的工作。

內(nèi)容

1. 獲取Type

一般有兩種方式獲取類型:

1.1 typeof方式

var entityType = typeof(T);typeof(DataRow);

1.2 Type.GetType()方法

var daoType = dao.GetType();

2.構(gòu)造函數(shù)ConstructorInfo

用ConstructorInfo表示構(gòu)造函數(shù);

通過Type.GetConstructor()來獲得;

如:獲取有一個(gè)參數(shù)為DataRow類型的構(gòu)造函數(shù)

entityType.GetConstructor(new Type[] { typeof(DataRow) });

3.方法信息MethodInfo

用MethodInfo表示函數(shù)信息;

通過Type.GetMethod ()來獲得;

如:獲取有一個(gè)名稱為Get,且指定了特性參數(shù)類型的函數(shù)

var daoGetMethodInfo = daoType.GetMethod("Get", GetDaoGetMethodParameterTypes(exPRBpk).ToArray());

4.屬性PropertyInfo

這個(gè)是最常用的,就不多說了,如:

entityType.GetProperty(memberName);

5.表達(dá)式Expression

另外,使用Expression<Func<T,object>> 傳遞參數(shù),好處就是可以獲得所有信息——代碼即數(shù)據(jù)

如:expr = zw=>zw.StaffCode

var memberName = (expr.Body as MemberExpression).Member.Name; //表示StaffCodevar memberExprType = (expr.Body as MemberExpression).Type; //表示StaffCode的類型,為String

反射積累實(shí)踐:

枚舉類型的成員

實(shí)例化新對(duì)象

執(zhí)行對(duì)象的成員

查找類型的信息

查找程序集的信息

檢查應(yīng)用于某種類型的自定義特性

創(chuàng)建和編譯新程序集

每天進(jìn)步一點(diǎn)點(diǎn)~~~


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永昌县| 定襄县| 米易县| 双牌县| 福安市| 枞阳县| 新民市| 黑水县| 汪清县| 五台县| 白玉县| 红河县| 南华县| 永城市| 廉江市| 涟水县| 平顶山市| 犍为县| 乾安县| 溆浦县| 云安县| 扎兰屯市| 常山县| 高邮市| 措美县| 竹北市| 南投市| 西乌珠穆沁旗| 曲水县| 武川县| 辽阳市| 班玛县| 乐都县| 讷河市| 宕昌县| 楚雄市| 贺州市| 临沂市| 类乌齐县| 平塘县| 锦州市|