如何在运行时加载类库DLL并使用VB.NET运行类函数?
问题描述:
说我一个类库项目中像这样一类被称为SomeClass-如何在运行时加载类库DLL并使用VB.NET运行类函数?
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。