• 反射


    反射是程序可以访问,检测和修改它本身状态或者行为的一种能力。

    反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。 然后,可以调用类型的方法或访问其字段和属性。

    1、什么是反射

    反射(Reflection)是.NET中的重要机制,通过反射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象。

    2、反射用途

    使用AssEmbly定义和加载程序集

    使用Module了解包含模块的程序集以及模块中的类等

    使用Constructorinfo了解构造函数的名称、参数、访问修饰符

    使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符

    使用FieldInfo了解字段的名称、访问修饰符

    使用Eventinfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等

    使用PropertyInfot了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值

    使用ParameteInfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等

    3、反射动态加载程序集

    Assembly

    Assembly.createInstance

    Assembly.CreateInstance

    4、反射使用场景

    有时不知道具体的类型,可以通过dll去得到类的对象

    某些特殊方法,传过来的是泛型类,需要通过反射处理某些特殊的业务

    通用方法DataTable和List<T>的相互转化时需要用到反射

    5、反射优点

    使用了反射后,你的程序在更新的时候无需重新编译,只要将更新的Dll换掉即可完成程序的更新和升级。

    将反射和配置文件相结合,可以开发出功能随意增删改的软件,具备了极大地灵活性和扩展性。

    反射提高了程序的灵活性,降低了耦合性,提高了自适应能力,同时也大大提高了程序的复用性。

    6、反射缺点

    首先带来的一个很大的问题就是——性能问题,使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。

    使用反射会使程序内部逻辑模糊化,程序员在调试代码的时候希望看到清晰的程序逻辑,而反射却绕过了源代码,因此会带来一定的维护性问题,同时反射代码比相应的直接代码更加复杂。

  • 相关阅读:
    C语言格式化字符串细节 --- %*s %*c %*.*s
    ROC曲线与AUC计算总结
    python 数字列表排序,输出对应的索引 | 转载
    python 类间的有趣调用
    Linux下以16进制形式显示文件内容的方法
    一些书签
    椭圆曲线算数原理与实现
    中国剩余定理来解密RSA密文
    在GridView控件内文本框实现TextChanged事件,勾选复选框时 :textbox文本框可编辑,编辑文本框的数字后 总金额会重新计算并统计
    关于RDLC子报表添加参数 错误“本地报表处理期间出错 。值不能为空。 参数名:value” 错误解决方法
  • 原文地址:https://www.cnblogs.com/ssz00/p/11201527.html
Copyright © 2020-2023  润新知