デリゲート型ではMethodプロパティを参照することで呼び出し対象となるメソッドのMethodInfoを取得することができます。
デリゲートからMethodInfoを取得し、対象となっているメソッドを呼び出す
Imports System
Class C
Public Sub M1()
End Sub
Public Shared Sub M2()
End Sub
End Class
Class Sample
Shared Sub Main()
Dim inst As New C()
' インスタンスメソッドM1のデリゲート
Dim a1 As New Action(AddressOf inst.M1)
' クラスメソッドM2のデリゲート
Dim a2 As New Action(AddressOf C.M2)
Console.WriteLine(a1.Method)
Console.WriteLine(a2.Method)
End Sub
End Class
実行結果
Void M1() Void M2()
他のデリゲートと連結されたデリゲート(マルチキャストデリゲート)では、GetInvocationListメソッドを使って連結されているすべてのデリゲートを取得してから、各デリゲートのMethodプロパティを参照することで個々のメソッドに対応するMethodInfoを取得できます。
デリゲートと呼び出されるメソッドに関してはデリゲートの機能 §.呼び出されるメソッド・インスタンスの取得 (Method, Target, GetInvocationList)でも解説しています。