c# 反射

【C# 高级语言 (人类语言)】--->【编译器 编译】--->【DLL/EXE】里面有2个文件分别是【metadata】和【IL】--->【IL】--->【CLR/JIT】--->【机器码 (01010101)】

我们所写的语言是【C# 高级语言 (人类语言)】这里的c#也可以是PHP或者JAVA等高级语言,是人类可以看懂的。

然后,通过编译器,编译成DLL或者EXE文件,这个文件下面有2个文件一个metdata和IL;

metdata里面存放着DLL或者EXE文件里面的类和方法的描述信息,类似于一本书的目录;

IL里面存放着编译后的完整代码;

TIS:metdata和IL这两个文件,我们是看不到的,如果用反编译工具是可以看到“IL”文件;

然后,提供给CLR进行执行,CLR会把IL文件里的代码编译成“机器码”也就是0101组成的代码,由计算机运行;

CLR同JAVA的虚拟机一样,是个运行环境;

TIS:二次编译:为了一次编译,不同平台使用;加一层中间层,更灵活;

 

我们的反射就是根据“metdata”找到类中的方法、属性、字段的

 

posted @ 2020-01-09 15:23  橙-极纪元JJYCheng  阅读(101)  评论(0编辑  收藏  举报