C♯相談室 Part14
■ このスレッドは過去ログ倉庫に格納されています
0451デフォルトの名無しさん
NGNGpublic class Test {
public event EventHandler TestEvent;
public MethodInfo[] GetMethodsOfTestEvent() {
if (this.TestEvent == null)
return new MethodInfo[0];
Delegate[] delegates = this.TestEvent.GetInvocationList();
MethodInfo[] methods = new MethodInfo[delegates.Length];
for (int i = 0; i < delegates.Length; i++)
methods[i] = delegates[i].Methods;
return methods;
}
}
public class Entry {
public static void Main() {
Test test = new Test();
test.TestEvent += new EventHandler(Hoge);
foreach (MethodInfo info in test.GetMethodsOfTestEvent())
Console.WriteLine(info);
}
public static void Hoge(object sender, EventArgs e) {}
}
結局の所eventはDelegateのラッパにすぎないわけで、
event宣言はMulticastDelegateクラスの派生クラスを暗黙的に作ることだから、
add_TestEventとremove_TestEvent以外は宣言したクラス内なら
普通にMulticastDelegateクラスのインスタンスとして使えるってことだ。
■ このスレッドは過去ログ倉庫に格納されています