在C#中可以這樣做嗎?可能與表達式。 EventHandlers不是控件或我擁有的任何類的成員。自動取消訂閱事件
例如爲:
Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);
的事件處理程序是,我沒有自己的靜態引用。我如何將這種類型的語句傳遞給以下函數?
private void RegisterEvent(EventHandler handler, Action<EventArgs> action)
{
handler += action;
m_toUnsubscribe.Add(handler, action);
}
... in Dispose()
{
foreach(var pair in m_toUnsubscribe)
{
pair.handler -= pair.action;
}
}
「可能帶有表達式」:您認爲什麼? – 2010-05-04 15:59:59
我可能無法在基本EventHandler上使用+ =和 - =運算符,因此我可能必須將整個+ =和 - =表達式編寫爲匿名函數: RegistertEvent(()=> SomeEvent + = SomeReaction, ()=> SomeEvent- = SomeReaction) – 2010-05-04 19:47:47