目录:
一. 反射的主要特性
1.反射中一个非常重要的类型就是 Type
1)当没有对象的时候使用这种方式来获取某个类型的Type
2)当已经获得对象后通过对象的GetType()方法来获取指定对象的类型的Type对象
2.获取Person类中的所有的方法
3.获取某个类型的所有属性
4.获取类中的所有字段,私有字段无法获取
5.获取所有成员,不包含私有成员
二. 反射动态加载程序集
1.动态加载一个程序集
2.获取刚刚加载的程序集中的所有的类型
1)GetTypes()获取了所有的类型
2)只获取那些public的类型
3.获取程序集中某个类的Type
4.动态调用类的方法
1)调用无参数无返回值的方法
2) 调用带参数,带返回值的方法
1> 调用不带重载的方法
2>调用带重载的方法
5. 通过反射获取类的属性,并赋值
1)获取Name属性
2)为属性赋值
3) 获取属性值
4)获取方法并调用
6.手动查找类型的构造函数,并且调用该构造函数来创建类型的对象
三. 其他的反射中的一些方法
1. bool IsAssignableFrom(Type c) 判断当前的类型的变量是不是可以接受c类型变量的赋值
2. bool IsInstanceOfType(object o):判断对象o是否是当前类的实例(当前类可以是o的类、父类、接口)
3. bool IsSubclassOf(Type c):判断当前类是否是类c的子类
4. IsAbstract 判断是否为抽象的,含接口
————————————————————————————————————————————————————————————————————————————
反射是什么?
反射:通过动态获取程序集,并获取其中的类型元数据,然后访问该类型的过程。
一. 反射的主要特性
在介绍反射的主要特性之前我们先建一个Person类(下面都是对Person类进行操作)
class Person { public int _height; public string Name { get; set; } public int Age { get; set; } public string Email { get; set; } public void Say() { Console.WriteLine("Hello everyone!"); } public void SayMorning() { Console.WriteLine("Good morning everybody!"); } //私有的 void Do() { Console.WriteLine("Just do it!"); } }