我的問題最好用小代碼示例來描述;如何從事件中調用方法名稱?
public class ClassA {
public delegate void MyDelegate(EventArgs e);
public event MyDelegate MyEvent;
public void OnEvent(EventArgs e) {
if (MyEvent != null)
MyEvent(e);
// print "WhatIsMyName" here
}
}
public class ClassB {
public ClassB() {
ClassA a = new ClassA();
a.MyEvent += WhatIsMyName;
}
public static void WhatIsMyName(EventArgs e) {
}
}
我猜我需要使用反射,但我不知道如何去了解它(甚至如果可能的話)。我也希望能夠獲得方法的類名。
爲什麼你在這裏需要一個類的名字?你需要綁定一個方法作爲處理程序嗎? – JustCode
如果有多個*處理程序訂閱了相同的事件,您想要什麼?如果它是已訂閱的匿名委託或lambda,你想要什麼?如果你能描述*爲什麼*你想/需要獲得這個名字,你可能會得到更好的幫助 - 這裏的總體目標是什麼?舉辦活動的目的之一是例如'ClassA'不必知道*關於發生'MyEvent'的其他代碼片段。 –
請注意,您可以有任意數量的用戶參加活動。所以(假設它是可能的,我認爲它不是),你必須打印方法名稱的*列表*。 –