动态类型解析技术示例
更新:2007 年 11 月
本示例说明主机如何通过提供特定程序集(可返回包含所请求类型)的事件处理程序,参与到类型解析过程中。这是一项高级技术,通常在分布式应用程序中使用,目的是进一步提高灵活性和容错能力。
有关使用这些示例的信息,请参见下面的主题:
使用命令提示生成示例
打开命令提示窗口,然后定位到该示例的语言特定子目录之一。
根据所选择的编程语言,在命令行上键入 msbuild DynamicTypeResolveCS.sln 或 msbuild DynamicTypeResolveVB.sln。
使用 Visual Studio 生成示例
打开 Windows 资源管理器,然后定位到该示例的语言特定子目录之一。
根据所选择的编程语言,双击 DynamicTypeResolveCS.sln 或 DynamicTypeResolveVB.sln 的图标,从而在 Visual Studio 中打开该文件。
在“生成”菜单上单击“生成解决方案”。
运行示例
打开命令提示窗口,然后定位到包含生成的可执行文件的目录。
在命令行上键入 DynamicTypeResolve.exe。
说明: |
---|
该示例生成一个控制台应用程序。您必须在命令提示窗口中启动并运行它才能查看它的输出。 |
备注
该示例试图实例化一个不存在的类型。但是,该示例还处理类型加载失败并动态创建需要的类型,以避免出现 FileNotFoundException。
此示例使用下面的技术和类。
反射
AppDomain 此类的 AssemblyResolve 事件用于添加一个在类型加载失败时调用的事件处理程序。
Activator 用于创建在编译时无需了解其名称的类型的实例。
MethodInfo 用于调用类型中的方法,在编译时无需了解该方法名称。
AssemblyBuilder 用于在运行时发出动态程序集。
AssemblyName 用于定义程序集的唯一标识。该示例为动态程序集指定文本名称,是此类型的最简单用法。
ModuleBuilder 用于在动态程序集中生成动态模块。
TypeBuilder 此类型(从 Type 派生)用于动态生成类型。可以从该类型请求 FieldBuilder、ConstructorBuilder 和 MethodBuilder 类型的实例。该示例使用这些类型生成一个完整类型。
MethodBuilder 用于在动态类型中定义方法。
ILGeneratorMethodBuilder 类型实现 GetILGenerator 方法,该方法返回 ILGenerator 类型的实例。此类型用于动态生成 Microsoft 中间语言 (MSIL) 代码。
委托与事件
- ResolveEventHandler 用于指示要在类型解析失败时调用的回调方法。