内容

王朝学院·作者佚名  2016-05-17
窄屏简体版  字體: 小  |  中  |  大  |  超大  

反射实践积累背景在一个服务实现内,有很多结构相似,略微不同的函数。

Martin大师的谆谆告诫我们,可以使用Extract Method的方式进行重构。

本次练习的内容主要是使用反射。

以零散知识点的形式记录每一天的工作。

内容1. 获取Type一般有两种方式获取类型:

1.1 typeof方式

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

1.2 Type.GetType()方法

var daoType = dao.GetType();

2.构造函数ConstructorInfo用ConstructorInfo表示构造函数;

通过Type.GetConstructor()来获得;

如:获取有一个参数为DataRow类型的构造函数

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

3.方法信息MethodInfo用MethodInfo表示函数信息;

通过Type.GetMethod ()来获得;

如:获取有一个名称为Get,且指定了特性参数类型的函数

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

4.属性PropertyInfo这个是最常用的,就不多说了,如:

entityType.GetProperty(memberName);

5.表达式Expression另外,使用Expression<Func<T,object>> 传递参数,好处就是可以获得所有信息——代码即数据。

如:expr = zw=>zw.StaffCode

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

反射积累实践:

枚举类型的成员

实例化新对象

执行对象的成员

查找类型的信息

查找程序集的信息

检查应用于某种类型的自定义特性

创建和编译新程序集

每天进步一点点~~~

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航