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