实现思路
- 获取程序集:使用反射获取包含这些类的程序集。
- 获取类型:根据用户输入的类名,在程序集中获取对应的类型。
- 创建实例:使用反射创建该类型的实例。
- 获取方法:获取该类型中的
Execute
方法。
- 调用方法:根据用户输入的参数,调用
Execute
方法,并处理可能出现的异常。
主要代码框架
Imports System.Reflection
Module Module1
Sub Main()
Dim className As String
Dim parameterValues As String()
'假设从用户输入获取类名和参数
Console.Write("请输入类名: ")
className = Console.ReadLine()
Console.Write("请输入参数(以逗号分隔): ")
parameterValues = Console.ReadLine().Split(",")
Try
'获取当前程序集
Dim assembly As Assembly = Assembly.GetExecutingAssembly()
'获取指定类的类型
Dim targetType As Type = assembly.GetType(className)
If targetType Is Nothing Then
Console.WriteLine($"找不到类型 {className}")
Return
End If
'创建类的实例
Dim instance As Object = Activator.CreateInstance(targetType)
If instance Is Nothing Then
Console.WriteLine($"无法创建 {className} 的实例")
Return
End If
'获取 Execute 方法
Dim executeMethod As MethodInfo = targetType.GetMethod("Execute")
If executeMethod Is Nothing Then
Console.WriteLine($"类型 {className} 中找不到 Execute 方法")
Return
End If
'准备参数
Dim parameters As Object() = parameterValues.Select(Function(p) Convert.ChangeType(p, executeMethod.GetParameters()(0).ParameterType)).ToArray()
'调用 Execute 方法
Dim result As Object = executeMethod.Invoke(instance, parameters)
Console.WriteLine($"Execute 方法返回值: {result}")
Catch ex As Exception
Console.WriteLine($"发生异常: {ex.Message}")
End Try
End Sub
End Module