C#【唐老狮】反射

反射

反射概念和关键类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("完整类名")
  • 类库工程
    • 纯逻辑代码,自身不可执行,提供逻辑给别人用
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概念 反射机制是使程序具有动态特性的非常关键的一种机制 需求1:根据指定的类名,类字段名和所对应的数据,得到该类的...
    沉麟阅读 4,649评论 0 0
  • 两个现实中的例子: 1、B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到...
    幻凌风阅读 9,747评论 0 7
  • 本文链接:https://blog.csdn.net/weixin_44370124/article/detail...
    一飞同学丶走慢点阅读 2,999评论 0 0
  • 反射 反射是无处不在的,MVC、AOP、IOC、ORM、Attribute等等 dll-IL-metadata-反...
    半吊子先生_123c阅读 1,711评论 0 0
  • 在.NET中,反射(reflection)是一个运行库类型发现的过程。使用反射服务,可以通过编程使用一个友好的对象...
    丑小丫大笨蛋阅读 8,218评论 0 8

友情链接更多精彩内容