码迷,mamicode.com
首页 > 其他好文 > 详细

反射 学习笔记(二) 动态获取外部程序集中的类类型及成员类型

时间:2015-06-25 12:11:45      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

之前熟悉了反射相关的基本概念,知道了如何获取Assembly类和Type类,接下来通过一个小程序来练习、体验通过反射动态获取给定的*.dll或*.exe程序集所包含的所有类型的列表(列表包括给定类型定义的方法、字段、属性、事件、支持的接口、方法参数、基类、命名空间等)。
目标:使用Winform写一个小工具,可以查看指定dll的元数据。

界面如下:

技术分享

使用的控件包括:
按钮、OpenFileDialog对话框、ComboBox(DropDownList类型)、TextBox(MultiLine为true)

第一步:
获取指定的dll文件路径,并根据路径将dll加载到内存中,获取对应的程序集(Assembly),并进一步获取程序集中定义的所有的类,将类的字符串名称作为数据源绑定到ComboBox上

技术分享

第二步:
当ComboBox选择项发生变化时,触发cbbDll_SelectedIndexChanged事件。根据选中的字符串名称,从程序集中获取对应的Type,将类型传入ShowMessage方法

技术分享

第三步:
添加一个静态类,添加方法,获取传入类型里定义的信息(方法、字段、属性、事件等)

字段:

技术分享

属性:

技术分享

事件:

技术分享

接口:

技术分享

方法及其返回值类型、参数类型

技术分享

运行效果图:

技术分享

注意事项:
选择外部应用a.dll,如果a.dll中引用了其他程序集(如b.dll),则程序在加载a.dll到内存中之前应当将b.dll加载到内存中,否则会报异常。

 

反射 学习笔记(二) 动态获取外部程序集中的类类型及成员类型

标签:

原文地址:http://www.cnblogs.com/newstar87/p/4599342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!