更新:2007 年 11 月
本示例说明如何用公共类和方法实现对任何托管程序集的后期绑定。从命令行选择程序集、类型、方法和参数。此示例将尝试加载程序集、定位类型和方法并通过所传递的参数调用方法。此示例甚至会为采用非字符串参数的方法调用进行必要的类型转换。反射类使得这种高级功能变得异常简单。此示例中包括一个名为 Tester.dll 的简单 DLL 项目。这个 Tester 项目提供了一个简单的类型,其中包含一些要尝试用于 Invoke 示例的方法。
有关使用这些示例的信息,请参见下面的主题:
使用命令提示生成示例
定位到该示例的语言特定子目录之一。
根据所选的编程语言,在命令行中键入 msbuild InvokeCS.sln 或 msbuild InvokeVB.sln。
使用 Visual Studio 生成示例
打开 Windows 资源管理器,然后定位到该示例的语言特定子目录之一。
根据所选择的编程语言,双击 InvokeCS.sln 或 InvokeVB.sln 的图标,从而在 Visual Studio 中打开该文件。
在“生成”菜单上单击“生成解决方案”。
![]() |
---|
此示例生成一个控制台应用程序。您必须在命令提示窗口中启动它才能查看相应的输出。 Invoke.exe 接受指示调用对象的命令行参数。如果不带任何参数运行,则将显示示例用法。请使用下面的语法调用类型上的方法: |
Invoke.exe [Assembly] [Type] [Method] [Parameters...]
运行示例
定位到包含 Invoke.exe 和 Tester.dll 的目录。
在命令行上键入 Invoke.exe [程序集] [类型] [方法] [参数...]。
备注
msbuild 工具生成 Invoke.exe 和 Tester.dll 这两个文件。
下面的示例使用三个参数来调用类型 SomeType 上的 ShowMessage 方法,例如:
Invoke.exe Tester.dll Microsoft.Samples.SomeType ShowMessage "This is an example of a message." "Question:" 4
有关反射调用的更多信息,请参见源代码文件中的注释。
下面各项简要介绍本示例使用的技术和类:
反射
Assembly用于加载程序集和搜索该程序集中的类型。
Type 用于获取 MemberInfo 实例的数组以及根据需要在创建实例时引用某类型。
MethodInfo 用于发现有关单个方法的信息,包括参数和方法名。此示例将该类型中的信息与命令行上提供的信息进行比较。MethodInfo 也可用于调用方法。
ParameterInfo 主要用于查找方法参数的类型,以便此示例能够适当地强制转换命令行参数。
Activator 用于创建某类型的实例(如果示例发现需要对实例方法进行调用)。
系统