• 反射--Reflection


    metadata:元数据

    IL:Intermediate Language 中间语言

    CLR:Common Language Runtime 公共语言运行时

    JIT:Just In Time 实时编译

    反射:System.Reflection,是由.Net框架提供的帮助类库,可以读取并使用metadata。

    菜鸟教程中反射的定义:

    通俗易懂的解释:

    反射用来从对象的外部了解对象内部的结构功能(包括类、结构、委托、接口、和枚举等),可以动态的创建出对象并执行它其中的方法。

    反射用到的主要类:
    System.Type 类--通过这个类可以访问任何给定数据类型的信息。
    System.Reflection.Assembly类--它可以用于访问给定程序集的信息,或者把这个程序集加载到程序中。

    System.Type类:
    System.Type 类对于反射起着核心的作用。但它是一个抽象的基类,Type有与每种数据类型对应的派生类,我们使用这个派生类的对象的方法、字段、属性来查找有关该类型的所有信息。

    Type类的属性:
            Name 数据类型名
            FullName 数据类型的完全限定名(包括命名空间名)
            Namespace 定义数据类型的命名空间名
            IsAbstract 指示该类型是否是抽象类型
            IsArray   指示该类型是否是数组
            IsClass   指示该类型是否是类
            IsEnum   指示该类型是否是枚举
            IsInterface    指示该类型是否是接口
            IsPublic 指示该类型是否是公有的
            IsSealed 指示该类型是否是密封类
            IsValueType 指示该类型是否是值类型
    Type类的方法:
            GetConstructor(), GetConstructors():返回ConstructorInfo类型,用于取得该类的构造函数的信息
            GetEvent(), GetEvents():返回EventInfo类型,用于取得该类的事件的信息
            GetField(), GetFields():返回FieldInfo类型,用于取得该类的字段(成员变量)的信息
            GetInterface(), GetInterfaces():返回InterfaceInfo类型,用于取得该类实现的接口的信息
            GetMember(), GetMembers():返回MemberInfo类型,用于取得该类的所有成员的信息
            GetMethod(), GetMethods():返回MethodInfo类型,用于取得该类的方法的信息
            GetProperty(), GetProperties():返回PropertyInfo类型,用于取得该类的属性的信息
    可以调用这些成员,其方式是调用Type的InvokeMember()方法,或者调用MethodInfo, PropertyInfo和其他类的Invoke()方法。

    System.Reflection.Assembly类 
         Assembly类可以获得程序集的信息,也可以动态的加载程序集,以及在程序集中查找类型信息,并创建该类型的实例。
        使用Assembly类可以降低程序集之间的耦合,有利于软件结构的合理化。
        
        通过程序集名称返回Assembly对象
            Assembly ass = Assembly.Load("ClassLibrary831");
        通过DLL文件名称返回Assembly对象
            Assembly ass = Assembly.LoadFrom("ClassLibrary831.dll");
        通过Assembly获取程序集中类 
            Type t = ass.GetType("ClassLibrary831.NewClass");   //参数必须是类的全名
        通过Assembly获取程序集中所有的类
            Type[] t = ass.GetTypes();

  • 相关阅读:
    建表关系
    设计模式-策略模式
    设计模式-适配器模式
    在线操作word和在线预览查找的资料记录
    Elasticsearch 使用-安装
    12-factors
    Kafka 使用-安装
    Apache Zookeeper 使用-安装
    Java 使用-安装
    设计模式-模板方法模式
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/11626340.html
Copyright © 2020-2023  润新知