【发布时间】:2017-06-23 14:24:11
【问题描述】:
有没有办法通过传递运算符 += 和 -= 作为参数在 c# 中添加和删除事件处理程序,这样一个方法就可以做到?
我试图避免重复:
AttachHandlers()
{
event1 += handler1;
event2 += handler2;
// etc...
}
DetachHandlers()
{
event1 -= handler1;
event2 -= handler2;
// etc...
}
或
AttachDetachHandlers(bool attach)
{
if (attach)
{
event1 += handler1;
event2 += handler2;
// etc...
}
else
{
event1 -= handler1;
event2 -= handler2;
}
}
相反,我想写这样的东西:
AttachDetachHandlers(operator addRemove)
{
addRemove(event1, handler1);
addRemove(event2, handler2);
// etc...
}
与类似的东西一起使用:
AttachDetachHandlers(+=);
理想情况下,它应该与具有不同签名的事件和处理程序一起使用(就像 += & -= do)。
【问题讨论】:
-
为什么不使用基于布尔值的 if 语句?
-
@Juan:因为它仍然是重复的(在问题中添加了一个示例)
-
@Sinatr 我不想在附加处理程序后立即分离它们。我想要一个函数来替换 AttachHandlers() 和 DetachHandlers()
标签: c# events delegates operators eventhandler