反射
(2)降低耦合性,提高自适应能力
(3)他允许程序创建和控制任何类的对象,无需提前硬编码目标类
(2)代码维护不是很容易
使用Module了解包含模块的程序集以及模块中的类等
使用ConstructorInfo了解构造函数的名称、参数、访问修饰符
使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符
使用FieldInfo了解字段的名称、访问修饰符
使用EventInfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等
使用PropertyInfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值
使用ParameterInfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等
反射使用场景
有时不知道具体的类型,可以通过dll去得到类的对象
某些特殊方法,传过来的是泛型类,需要通过反射处理某些特殊的业务
通用方法DataTable和List<T>的相互转化时需要用到反射
Type类的属性:
Name 数据类型名
FullName 数据类型的完全限定名(包括命名空间名)
Namespace 定义数据类型的命名空间名
IsAbstract 指示该类型是否是抽象类型
IsArray 指示该类型是否是数组
IsClass 指示该类型是否是类
IsEnum 指示该类型是否是枚举
IsInterface 指示该类型是否是接口
IsPublic 指示该类型是否是公有的
IsSealed 指示该类型是否是密封类
IsValueType 指示该类型是否是值类型