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

TestPlugin.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 に答える