反射实践积累

背景

在一个服务实现内,有很多结构相似,略微不同的函数。

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; //表示StaffCode

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

每天进步一点点~~~

反射实践积累

时间: 2024-10-06 10:53:33

反射实践积累的相关文章

编程实践积累

1 编程经验实践,积累,总结,分享 2 3 4 博客地址:http://www.cnblogs.com/liaowanzhong/ 5 6 7 8 9 10 11 12 13 14 15 1. 大量群发邮件:购买Edm服务,大的互联网企业是和邮箱服务商签订协议(百度,腾讯,京东,阿里,csdn) 16 站内信 17 内网发短信:短信猫 18 19 2. Servlet Filter 生命周期 20 *Servlet:看配置文件中web.xml配置其启动的优先级别,即当load-on-startu

JAVA反射实践

Java反射机制在我的理解当中就是下面几点: 1. 对一个给定的类名(以字符串形式提供)能动态构建一个对象实例 2. 对于任意一个类,都能够知道这个类的所有属性和方法 3. 对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制,这种反射机制在Java当中给我们带来了极大的方便,被大量地应用于JavaBean中 在Java的反射中我们主要用到以下几个类,下面将逐个说明 java.lang.Class; java.lang.r

java处理excel的一点实践积累

作者:佟亮    日期:2008-11-06 1   文档说明 目的:编写本文档主要的目的是与大家分享下如何用java处理excel,文档中的代码一部分来自<企业项目管理系统V2.0>的源码,一部分copy网上的. 背景:使用Windows操作系统的同事对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事.在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈. 2   需求 本部分与技术无关,没兴趣的同事可以跳过直接看下一章.

JS实战 &#183; 实践积累点滴杂烩

onmouseover : 鼠标进入 onmouseout : 鼠标离开 onfocus:得到焦点 表单提交执行JS代码,有两种常用方式. 一:在局部(比如按钮定义处)用onclick="return Check()"; 二:在表单form处用onsubmit="retnrn Check(this)"; 表单提交验证:灵活运用returnValue 取消超链接的效果:<a href="javascript:void(0)"></

java 反射实践

/** * * @author yuxg */ import coreJava.javaFile; import javaClassStudy.Student; import javaClassStudy.Person; public class helloWorld { public static void main(String[] parm){ //reflection //实例一个学生对象 Person p = new Student("yuxg",12); //获取对象的类

Go反射实践

package main import ( "fmt" "reflect" ) //定义了一个Monster结构体 type Monster struct { Name string `json:"name"` Age int `json:"monster_age"` Score float32 `json:"成绩"` Sex string } //方法,返回两个数的和 func (s Monster) G

JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Fiald,Method,反射Main方法,数组的反射和实践

JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Fiald,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识Class类 想要反射,你就必须要了解一个类--Class,我们知道,java程序中的各个java类都属于同一事物,我们通常用Classliability描述对吧,反射这个概念从JDK1.2就出来了,历史算是比较悠久了,这个Class可不是关键字哦,这个是一个类,他代表的是一类事物: 我们归根结底就

java 反射(reflect)总结,附对象打印工具类

java反射机制认知 java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取类的信息以及动态调用对象的方法的功能称为java语言的反射机制Reflection. 这就说明:Java程序可以加载一个编译期间完全未知的class,获悉其完整构造,并生成其对象实体.或对其fields设值.或唤起其methods.虽然java并不是动态语言. 如何达到上述目的,是本文探讨的内容.本文将介绍Reflection A

JVM(四),什么是反射

四.什么是反射 1.反射理论 2.反射实践 (1)创建Robot类 public class Robot { private String name; public void sayHi(String helloSentence){ System.out.println(helloSentence + " " + name); } private String throwHello(String tag){ return "Hello " + tag; } stat