【发布时间】:2011-12-06 22:36:27
【问题描述】:
是否可以将事件作为参数传递给方法?
例如,下面的方法订阅事件,确实有效,然后取消订阅事件:
void SubscribeDoAndUnsubscribe<TElement, TEventArgs>(
IEnumerable<TElement> elements,
??? elementEvent)
where TEventArgs: EventArgs
{
EventHandler<TEventArgs> handler = (sender, e) => { /* Handle an event */ };
foreach (var element in elements)
{
// Subscribe somehow
element.elementEvent += handler
}
// Do things
foreach (var element in elements)
{
// Unsubscribe somehow
element.elementEvent -= handler
}
}
客户端代码:
var elements = new [] { new Button(), new Button() };
SubscribeDoAndUnsubscribe(elements, ??? /* e => e.Click */);
如果不可能,我如何以其他方式实现类似的逻辑?我应该为订阅/取消订阅方法传递一对委托吗?
【问题讨论】: