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开发编译器的开发使用的

原创粉丝点击