0

您好,我正在使用 vb.net 中的接口类来制作插件架构。到目前为止,我还没有找到适合初学者的分步教程。但我已经做到了这一点:

主应用

Public Class PluginHandler

Interface IApplications
    Sub ChangeForms()
End Interface

Public Shared Sub GetDLLFromDir(ByVal TheDir)
    For Each dll As String In System.IO.Directory.GetFiles(TheDir, "*.dll")
        LoadPlugin(dll)
    Next
End Sub

Public Shared Sub LoadPlugin(ByVal ThePlugin)
    Dim Asm = Assembly.LoadFile(ThePlugin)
    Dim type As Type = Asm.GetType("TestPlugin.Class_TestPlugin")
    Dim method As MethodInfo = type.GetMethod("ChangeForms")
    method.Invoke(Nothing, Nothing)
End Sub

End Class

测试插件.vb

Public Class Class_TestPlugin
Implements Plugin_Application.PluginHandler.IApplications

Sub ChangeForms() Implements Plugin_Application. _
PluginHandler.IApplications.ChangeForms

    Dim NewForm As New Form_Test
    NewForm.Show()

End Sub
End Class

我的问题是它说要调用的方法-> 非静态方法需要一个目标。我在另一个论坛上看到可能找不到该方法。我发现它说方法名称和无效。但我不确定该怎么做。如果有人可以修改我的代码以使其工作或给我一些想法以使我的代码工作。谢谢 :)

这是我的测试项目文件夹的链接:链接

4

1 回答 1

0

您必须创建一个应该调用该方法的对象:

Dim ctor = type.GetConstructor({}) 'no parameters for constructor
Dim obj = ctor.Invoke({})
method.Invoke(obj, {})
于 2013-01-20T14:05:59.223 回答