美文网首页
C#【唐老狮】反射

C#【唐老狮】反射

作者: 风之子__ | 来源:发表于2022-07-30 23:34 被阅读0次

反射

反射概念和关键类TYpe

  • 程序集
    • 经由编译器编译得到,进一步编译执行的中间产物
      • dll文件
    • 扩展:C语言编译过程
      • 预处理
      • 编译
      • 汇编:目标文件
      • 链接:可执行文件
  • 元数据
    • 描述数据的数据
      • 程序或类型的数据,存放在程序集中
  • 反射概念
    • 运行时(程序加载到内存中变为进程)查看本身或其他程序的元数据的行为
  • 反射作用
    • 运行时得到所有元数据
    • 运行时实例化对象,操作对象
    • 运行时调用其他程序集里的代码
  • Type:类的反射信息类
    • 获取Type
      • object.GetType()
      • typeof(类名)
      • Type.GetType("包含命名空间的类名")
      • 指向同一类 元数据的Type引用指向同一个地址
    • 获取程序集
      • Type.Assembly
    • 获取所有公共成员
      • MemberInfo类
      • Type.GetMembers()
    • 获取类的公共构造函数
      • 获取所有构造函数
        • ConstructorInfo类
        • type.GetConstructors()
      • 获取其中一个构造函数并执行
        • 得到构造函数传入Type数组(构造函数形参)
          • Type.GetContructor(new Type[0]) 无参构造
          • Type.GetConstuctor(new Type[]{typeof(形参类型)})
        • 执行构造函数,传入object数组(构造函数形参)
          • ConstructorInfo.Invoke(null) 无参构造
          • ConstructorInfo.Invoke(new object[]{实参})
    • 获取类的公共成员变量
      • 获取所有成员变量
        • FieldInfo类
        • Type.GetFields()
      • 获取指定名称公共成员变量
        • Type.GetField("成员变量名")
      • 通过反射获取和设置指定对象的值
        • FieldInfo.GetValue(指定对象引用)
        • FieldInfo.SetValue(指定对象引用)
    • 获取类的公共成员方法
      • MethodInfo类
      • 获取所有公共方法
        • Type.GetMethods()
      • 获取指定方法
        • Type.GetMethod("方法名",new Type[]{typeof(形参类型)})
      • 调用方法
        • MethodInfo.Invoke(方法名,new object[]{实参})

反射关键类Assembly和Activator

  • Activator
    • 作用
      • 快速实例化对象(静态方法)
    • 使用
      • 无参构造
        • Activator.CreateInstance(Type)
      • 有参构造
        • Activator.CreateInstance(Type,实参)
  • Assembly
    • 作用
      • 加载程序集并使用程序集
    • 使用
      • Assembly类
      • 加载指定程序集
        • Assembly.Load("程序集名称")同一文件下程序集
        • Assembly.LoadFrom("路径字符串")不同文件下程序集
          • Assembly.LoadFile("路径字符串")
      • 加载程序集中的类对象
        • Assembly.GetTypes()获取所有元数据类
        • Assembly.GetType("完整类名")
  • 类库工程
    • 纯逻辑代码,自身不可执行,提供逻辑给别人用

相关文章

  • C#【唐老狮】反射

    反射 反射概念和关键类TYpe 程序集经由编译器编译得到,进一步编译执行的中间产物dll文件扩展:C语言编译过程预...

  • C#它山之石

    C# 使用反射技术实例化指定的类C#之玩转反射Reactive Extensions入门IoC solutions...

  • Unity 之如何写出强壮的代码

    【反射】 Unity C#基础之 反射反射,程序员的快乐 Unity C#基础之 特性,一个灵活的小工具 【多线程...

  • 目录 - C#

    总目录 C# 第01局:泛型 C# 第02局:反射 C# 第03局:特性 C# 第04局:委托 C# 第05局:事...

  • C#特性(Attribute)-现学现用

    前言 想要灵性的使用C#反射机制,特性(Attribute)的使用是必不可少的。 C# 特性(Attribute)...

  • C#反射

    C# 反射(Reflection) 反射指程序可以访问、检测和修改它本身状态或行为的一种能力。程序集包含模块,而模...

  • C#反射

    什么是元数据,什么是反射 程序是用来处理数据的,文本和特性都是数据,而程序本身(类的本身和BLC中的类) 这些也是...

  • C#反射

    根据moduleName反射到某个类某个方法 转换成DataView操作Datatable ![B(IRRLH7`...

  • C#反射

    注意:C#本身已经时候用了反射!!!! 以下了解即可不过,反射可以拿到类中private的字段,这个对编程则有用...

  • Swift中的反射Mirror

    Swift中的反射Mirror [TOC] 前言 Mirror是Swift中的反射机制,对于C#和Java开发人员...

网友评论

      本文标题:C#【唐老狮】反射

      本文链接:https://www.haomeiwen.com/subject/wgulwrtx.html