• 反射


     1.反射:反射是一个运行库类型发现的过程,使用反射,可以通过编程使用一个友好的对象模型得到与通过ildasm.exe显示的相同的元数据信息,例如,通过反射可以得到一个给定的.dll/.exe程序集所包含的所有类型的列表,包括类型定义的方法、字段、属性和事件,也可以动态发现一组给定类型支持的的接口、方法参数、基类、命名空间和清单数据等。

    System.Reflection中包含主要的成员信息:

    1)Assembly:该抽象类包含了很多静态方法,可以加载、了解和操纵一个程序集

    2)AssemblyName:程序集身份的细节,包括版本信息、区域信息

    3)EventInfo:该抽象类保存给定事件的信息

    4)FieldInfo:该抽象类保存给定字段的信息

    5)MemberInfo:抽象类基类,为EventInfo、FieldInfo、ParameterInfo、PropertyInfo定义公共的行为

    6)MethodInfo:该抽象类保存给定方法的信息

    7)Module:该抽象类可以使访问多文件程序集中给定的模块

    8)ParameterInfo:该抽象类保存给定参数的信息

    9)PropertyInfo:该抽象类保存给定属性的信息

    2.Syetem.Type定义了很多成员可以检查很多类型的元数据,返回的类型大多位于System.Reflection中,例如Type.GetMethods返回一个类型为MethodInfo的数组。

    1)使用System.Object.GetType(),返回当前对象元数据的Type类的实例,得到编译时类型的信息,并且要有类型实例。

    2)也可以通过typeof获取类型的信息,这种方法不需要先建立实例。

    3)使用System.Type.GetType(),指定类型的完全限定名,同时方法可以被重载,可以指定两个布尔参数,一个控制是否抛出异常,一个是否区分大小写。

    注意:如果需要得到外部私有程序集的类型数据时,字符串参数需要使用类型完全限定名,加上类型所在程序集的名字,逗号隔开,字符串也可以指定一个+标记来表示嵌套类型。

    3.反射方法

    Type.GetMethods()可以获取类型定义的每个方法的名称。

    4.反射字段和属性

    Type.GetFields()可以获取类型定义的字段。

    Type.GetProperties()可以获取类型定义的属性。

    5.反射实现的接口

    Type.GetInterfaces()可以输出类型支持的接口名称。

    6.显示其他辅助信息

    可以输出类型的其他信息,例如是否是泛型(IsGenericTypeDefinitoon)、是否密封(IsSealed)、是否抽象(IsAbstract)、基类(BaseType)是什么等。

    7.反射泛型类型

    调用Type.GetType()来获取泛型类型的元数据描述,必须加上反勾号`+数字来表示支持的类型参数个数,如果希望输出List<T>,就要传入字符串System.Collection.Generic.List`1。

    如果希望反射类型DicTinary<Tkey,Tvalue>,需要传入字符串System.Collection.Generic.DicTinary`2。

    8.反射方法参数和返回值

    MethodInfo提供了ReturnType属性和GetParameters()方法。

  • 相关阅读:
    (设计模式)组合模式
    redis 集群部署 (linux)
    redis 集群 配置文件
    redis 外部访问配置(bind正确配置)
    (设计模式)桥模式
    (springboot)freemarker(二)
    (springboot)入门(一)
    (设计模式)抽象工厂
    (设计模式)建造者模式
    (设计模式)原型
  • 原文地址:https://www.cnblogs.com/qqvvn/p/9696943.html
Copyright © 2020-2023  润新知