反射

来源:互联网 发布:c语言编写程序的步骤 编辑:程序博客网 时间:2024/05/18 13:29
1.使用反射技术,可获取已加载程序集及其定义类型的相关信息,发射一般应用在项目初期的框架
  设计和代码的结构设计,在创建型设计模式中得以最大的应用
学习内容:创建并使用类库
 理解命名空间
 使用反射

2.程序集
程序集是最小的单位,通过一个可执行文件.exe或者类库.dll
这样的程序集是单文件程序集,程序集也可以由多个文件组成,每个文件包含一个模块文件或者一个资源文件
通过反射:可以获取程序集中的信息,这就是反射和程序集之间简单的逻辑关系。


3.创建类库
另一种类型的程序集-类库,通过编译类库文件,最后生成的是一个扩展名为.dll的动态链接文件。
这个.dll文件通常都是托管代码,也就是说不能脱离.NET环境单独运行
类库文件在实际项目中主要有作用
组织代码:可以把功能相同的代码组织在一起,便于管理
组件开发:开发出一个可扩展性很强的复杂组件


编译文件通常默认有两种方式:Debug和Release。Debug模式通常在调试程序时使用,编译后的输出文件包含了编译信息,如断点信息,监视变量
而Release则不包含任何其他额外的信息,所以部署项目时,通常使用Release模式编译文件


4.通过发射机制,可以动态的获取运行时的类型信息。在System.Reflection命名空间下包含了有关反射的类
反射:是在.NET运行时,动态获取类型信息方式。一个典型的.NET应用程序通常包含三个部分组成:程序集(Assembly),模块(Module),和类型(Class)
程序集中包含了模块,而模块中包含了类型,使用.NET的反射机制,就可以动态的获取每个层级的信息

由于反射机制是在.NET运行时动态获取信息的,所以相比静态获取(在编译之前获取类型信息),性能会得到一定的损耗。反射被应用到以下场合。
编写开发文档。其树形目录就是根据反射机制来实现的,如果不用反射,就需要人工把哪些内置的程序集信息手动输入到数据库,然后呈现出来,相比较反射比较浪费时间又容易出错
框架设计。一个好的框架可以节省很多时间上的成本,而反射机制可以大大提高代码设计的灵活性


5.获取运行时类型
System.Reflection命名空间中包含了有关反射的类,Assembly就是一个很常用的类,使用Assembly对象的LoadFile()方法可以动态加载.dll文件,而GetType()方法就可以获取相关的类型信息


//创建一个Assembly程序集对象,动态加载类库文件
Assembly ass=Assembly.LoadFile(@"C:\Example.12.dll");
//获取类型
Type type=ass.GetType("Example.Rectangle");
//输出类型名
Console.WriteLine(type.FullName);


6.反射在工厂设计模式中的应用
在设计代码时,使用反射可以增加代码的灵活性,增强代码的扩展性。
原创粉丝点击