反射的定义:有关程序及其类型的数据成为元数据,一个运行的程序查看本身或者其他应用程序的元数据的行为成为反射。
反射的理解:其实反射就是通过程序集来动态创建对象。
以下是通过反射来实现动态创建对象的过程:
//1.加载程序集文件
Assembly asm = Assembly.LoadFile(@"D:\ClassLibrary1.dll");
//以下是两种不同的加载程序集的方式,一种不带扩展名, 一种带了扩展名
//Assembly.Load(程序集的名称);
//Assembly.LoadFrom(程序集的文件名.dll);
//2.通过程序集获取程序集中Person对象的类型,注意:全路径:命名空间.类名
Type type = asm.GetType("ClassLibrary1.Person");
//3.动态创建类型的实例
Object o = Activator.CreateInstance(type, new Object[] { "lucy", 18, '女' }); // 调用Person类的构造方法
//4.通过类型得到类型的方法 ,其中Func为方法名
MethodInfo m = type.GetMethod("Func");
//5.与动态创建的类型的实例绑定,并且通过Invoke执行实例的方法
//其中o为通过反射动态创建的对象,null表示要执行方法的参数,这里不带参数。
m.Invoke(o, null);