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