• 反射


    反射是程序可以访问,监测和修改它本身状态或者行为的一种能力。
     
    反射动态地创建类型的实例,将绑定到现有对象或由现有对象获取类型然后可以调用类型的方法或访问其字段和属性。
     
    优点:(1)反射提高了应用程序的灵活性和扩展性
              (2)降低耦合性,提高自适应能力
              (3)他允许程序创建和控制任何类的对象,无需提前硬编码目标类
     
    缺点:(1)首先带来的一个很大的问题就是——性能问题,使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码
              (2)代码维护不是很容易
     
    反射用途
        使用Assembly定义和加载程序集

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

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

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

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

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

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

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

    反射使用场景

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

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

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

    Type类的属性:

       Name 数据类型名
            FullName 数据类型的完全限定名(包括命名空间名)
            Namespace 定义数据类型的命名空间名
            IsAbstract 指示该类型是否是抽象类型
            IsArray   指示该类型是否是数组
            IsClass   指示该类型是否是类
            IsEnum   指示该类型是否是枚举
            IsInterface    指示该类型是否是接口
            IsPublic 指示该类型是否是公有的
            IsSealed 指示该类型是否是密封类
            IsValueType 指示该类型是否是值类型

  • 相关阅读:
    浅谈GET和POST请求方式
    浅淡建立bitmap实例
    从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误
    为RichTextBox添加快捷功能菜单(复制,粘贴,全选等)
    针对解决sql server数据库中不区分大小写问题.
    <转>用C#创建可拖动窗体
    如何:对 Windows 窗体控件进行线程安全调用
    正则
    <转>反射的第二部分:Emit
    『励志』一些普通又具有深刻哲理的警句(转载)
  • 原文地址:https://www.cnblogs.com/wxj2/p/11180064.html
Copyright © 2020-2023  润新知