
反射的定义:审查元数据并收集关于它的类型信息的能⼒。元数据(编译以后的最基本数据单元)就是⼀⼤堆的表,当编译程序集或者模块
时,编译器会创建⼀个类定义表,⼀个字段定义表,和⼀个⽅法定义表等,。System.reflection命名空间包含的⼏个类,允许你反射(解
析)这些元数据表的代码
这段话不太好理解:⾸先什么是元数据? 上⾯虽然有解释,但是会是⼀头雾⽔,可以先看下:
其实就是运⾏库的中间语⾔会把你写的⽅法快速的本机指令,是⼆进制的形成存在。放在内存中,根据反射技术可以去读取并且调⽤到内部
的⽅法。
1. 可以使⽤反射动态地创建类型的实例,将类型绑定到现有对象,或从现 有对象中获取类型
2. 应⽤程序需要在运⾏时从某个特定的程序集中载⼊⼀个特定的类型,以便实现某个任务时可以⽤到反射。
3. 反射主要应⽤与类库,这些类库需要知道⼀个类型的定义,以便提供更多的功能。
1. 现实应⽤程序中很少有应⽤程序需要使⽤反射类型
4. 某些反射类型是专门为那些clr 开发编译器的开发使⽤的,所以你要意识到不是所有的反射类型都是适合每个⼈的。
这⾥需要注意: var t = Type.GetType(className);
object obj = Activator.CreateInstance(t);
这两个代码,这⾥没有⽤到Assembly,⽽是直接⽤ Type获取类,className是 命名空间+类名
MethodInfo这个是返回接受的类型,具体到某个⽅法就是 MethodInfo ,如果是t.GetMethods() 就返回的是:MethodInfo[]
Object[] 是反射传参数的⽅法,不能直接根据⽅法参数类型来传,全部默认是对象数组传