假设我在一个名为 SomeClass 的类库项目中有一个这样的类-
Public Class SomeClass
Public Function DoIt() as String
Return "Do What?"
End Function
End Class
我得到一个SomeClass.dll
我想在运行时从另一个 Windows 窗体应用程序加载的,然后让它调用该DoIt()
函数并在消息框或其他东西中显示它的值。我怎么做?
假设我在一个名为 SomeClass 的类库项目中有一个这样的类-
Public Class SomeClass
Public Function DoIt() as String
Return "Do What?"
End Function
End Class
我得到一个SomeClass.dll
我想在运行时从另一个 Windows 窗体应用程序加载的,然后让它调用该DoIt()
函数并在消息框或其他东西中显示它的值。我怎么做?
我建议进行DoIt
共享,因为它不需要类状态:
Public Class SomeClass
Public Shared Function DoIt() as String
Return "Do What?"
End Function
End Class
然后调用它很容易:
' Loads SomeClass.dll
Dim asm = Assembly.Load("SomeClass")
' Replace the first SomeClass with the base namespace of your SomeClass assembly
Dim type = asm.GetType("SomeClass.SomeClass")
Dim returnValue = DirectCast(type.InvokeMember("DoIt", _
BindingFlags.InvokeMethod | BindingFlags.Static, _
Nothing, Nothing, {}),
String)
如果您无法共享该方法,您可以使用Activator.CreateInstance创建您的类的实例并将其作为参数传递给Type.InvokeMember。
我所有的代码示例都假设 Option Strict On 和 Option Infer On。