1.什么是反射
反射 其实就是一个微软帮助类库 读取元数据并使用 为了可扩展
动态加载 减少对象与对象之间的依赖 但是消耗性能
2.为什么需要反射:
最初使用反射的时候,既然可以通过new 一个对象的方式得到对象,然后通过对象去调用属性和方法,那么为什么还需要反射去调用呢?后来使用多了发现这就是一个先绑定还是后绑定的问题,很多初使用反射的开发人员通常都会有类似这种疑虑:既然在开发时就能够写好代码,干嘛还放到运行期去做,不光繁琐,而且效率也受影响。博主觉得主要是适用性的问题,如果你的系统没有那么高的扩展性和灵活性要求,你大可不必考虑反射。但在架构设计时,很多东西都需要考虑复用性,并且在某些特定的场景下你得不到具体的类时,你就必须用到反射。博主总结了下自己使用过的反射场景:
(1)有时不知道具体的类型,可以通过dll去得到类的对象;也就是插件理念 比如数据库都有增删改查的方法,但是mysql.dll 和 sqlserver.dll 可能需要进行切换数据库操作,那么如果是从C#代码可能就需要更改代码连接不同数据库,但是如果反射 动态加载dll的形式,因为方法都是一样的只需要替换dll类,这样就不需要改动代码,只更改配置文件。反射的代码就不需要动 知识读取dll然后动态加载后使用增删改查。
(2)某些特殊方法,传过来的是泛型类,需要通过反射处理某些特殊的业务;
比如泛型类里面 有A类需要处理 A逻辑 B类需要B逻辑,就可以通过反射读取在进行if else操作
(3)通用方法DataTable和List<T>的相互转化时需要用到反射ÿ