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”找到类中的方法、属性、字段的
qq:527592435