C# 反射
来源:互联网 发布:林俊杰baby知乎 编辑:程序博客网 时间:2024/06/05 11:12
.NET可执行应用程序结构
程序代码在编译后生成可执行的应用
应用程序结构分为
应用程序域——程序集——模块——类型——成员
应用程序域:运行过程中.NET所在的独立区域,提供了一块可控区域作为程序集和相关配置的容器
每个.NET进程通常拥有一个应用域:默认域,默认域是由CLR在程序开始的时候默认创建。
程序集:.NET应用程序的基本构造块。.NET的基本构造单元,是所有类的容器。
程序集包含所有已编译的类、他们的IL代码、运行时资源和其他程序集信息。
以.exe或者.dll体现
模块:程序集的内容存储在一个或多个模块中(中间容器)
反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。
反射技术其实就是动态获取程序集的元数据的功能,反射通过动态加载dll,然后对其进行解析,从而创建对象,调用成员。
元数据:编译后的最基本数据单元
反射的作用:
1、可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型
2、应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务的时候可以用到反射
3、反射主要应用于类库,这些类库需要知道一个类型的定义,以便提供更多的功能。
应用要点:
1、现实应用程序中很少有应用程序需要使用反射类型
2、使用发射动态绑定需要牺牲性能
3、有些元数据信息不能通过反射获取
4、某些反射类型是专门为那些CLR开发编译器的开发使用的
阅读全文
0 0
- C# 反射
- C#反射
- C# 反射
- C#反射
- C#反射
- C# 反射
- C#反射
- c#反射
- c#反射
- C#反射
- c# 反射
- C# 反射
- c# 反射
- C#反射
- C#反射
- C#反射
- C# 反射
- C#反射
- 10.app目录下的build.gradle
- 自己动手制作u盘启动盘,借助UltraISO就行了
- [C++11]std::promise介绍及使用
- springmvc配置文件
- SQL学习(3)——MySQL数据库常用的函数--流程控制函数和日期时间函数
- C# 反射
- 为金融数据而生-量亿数据 (待审核)
- Android 中 getApplicationContext()、this、getApplication()之间的区别
- itk中的花式数据切割(五)
- 基于Xcode8.3.2及iOS10.3.2的Appium1.6.5测试环境搭建
- 数据结构线性链表C++模板
- Binary XML file line #10: Error inflating class android.support.design.widget.TabLayout
- c/c++ 函数指针的用法
- #pragma pack(push,1) & #pragma pack(pop)