之前熟悉了反射相关的基本概念,知道了如何获取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加载到内存中,否则会报异常。
时间: 2024-12-09 11:04:14