2009年11月5日

delegateのシグネチャを調べる


delegateのシグネチャを調べる方法を探している人がいたので、調べてみた。



class Program
{
static void Main(string[] args)
{
Type t = typeof(MyEventHandler);
Console.WriteLine(t);
MethodInfo m = t.GetMethod("Invoke");
Console.WriteLine(m.ReturnType);
foreach (var p in m.GetParameters())
{
Console.WriteLine(p);
}
}
}


public delegate bool MyEventHandler(object sender);


ildasmで調べてみると、
Invokeメソッドがdelegateの宣言と一致してるようなので、リフレクションでパラメータと戻り値の型を調べればOKっぽい。