zoukankan      html  css  js  c++  java
  • C# 程序集 与 反射

    程序集

      对于C#程序员来说一定不陌生,不就是VS生成的那些exe,dll么。是的,程序集(.net中exe与dll的区别就是exe有程序接入口,即Main函数)就是.net框架下,可以被CLR加载并运行的一堆数据集(类似java中的jar包,无法脱离虚拟机自己运行)。它们和之前CC++生成的可执行程序和动态链接库有本质的区别。

        说了半天,程序集里到底有什么呢。作为一堆数据集,程序集的数据可以分为:类型元数据,程序元数据,IL代码,资源。

        先说下什么是元数据,元数据一般就是指描述自身的数据。

        程序集元数据:包含程序集的版本信息,安全信息,签名等。

        类型元数据:记录了程序集将引用了哪些类,用户自定义了哪些类,字段,数据类型等一系列信息(VS的编程助手靠的就是反射获取类型元数据)。

        IL代码:MSIL,微软中间语言,微软跨语言的根基所在,所有的C#代码都编译成IL代码,保存在程序集中,在被CLR加载后,由JIT调用BCL,FTL即时编译成机器码来让CPU运行。

        资源:图片,视频,音频不一而足。

    反射

       学C#的好多人都提反射色变,觉得这是个很高级的东西。好吧,反射使用的技术的确高级,但是我们应用起来却是非常的容易,微软体贴的优点在这时候就凸显出来了。

          其实反射很简单,它的本质就是去在运行时动态的加载程序集,找出并能得到程序集中包含什么类,方法,属性 和字段,并且去调用这些类,方法,属性和字段。

         反射常用的类:
      
        Assembly  加载程序集用
        Type      核心类,反射调用获得的类就靠是它保存的

  • 相关阅读:
    MyBatis源码分析-IDEA新建MyBatis源码工程
    MyBatis源码分析-SQL语句执行的完整流程
    揭开C++类中虚表的“神秘面纱”
    MyBatis源码分析-MyBatis初始化流程
    由一个多线程共享Integer类变量问题引起的。。。
    Java Web之Servlet技术
    Java内存模型与垃圾回收
    Java Web之会话技术
    Spring学习之第一个AOP程序
    Java Web之JSP技术
  • 原文地址:https://www.cnblogs.com/tonnytong/p/3909425.html
Copyright © 2011-2022 走看看