重载 += 事件运算符
Posted
技术标签:
【中文标题】重载 += 事件运算符【英文标题】:Overload the += event operator 【发布时间】:2010-11-11 01:25:45 【问题描述】:有没有办法在 C# 中重载事件 += 和 -= 运算符?我想要做的是获取一个事件侦听器并将其注册到不同的事件。所以是这样的:
SomeEvent += new Event(EventMethod);
那么它实际上不是附加到 SomeEvent,而是附加到不同的事件:
DifferentEvent += (the listener above);
AnotherDiffEvent += (the listener above);
谢谢
【问题讨论】:
【参考方案1】:这并不是真正的超载,但你可以这样做:
public event MyDelegate SomeEvent
add
DifferentEvent += value;
AnotherDiffEvent += value;
remove
DifferentEvent -= value;
AnotherDiffEvent-= value;
更多信息请访问switchonthecode.com
【讨论】:
【参考方案2】:您可以在 C# 中使用 custom event accessors 执行此操作。
public EventHandler DiffEvent;
public EventHandler AnotherDiffEvent;
public event EventHandler SomeEvent
add
DiffEvent += value;
AnotherDiffEvent += value;
remove
DiffEvent -= value;
AnotherDiffEvent -= value;
这意味着您可以简单地调用SomeEvent += new EventHandler(Foo)
或SomeEvent -= new EventHandler(Foo)
,相应的事件处理程序将被自动添加/删除。
【讨论】:
【参考方案3】:您可以使用 + 和 - 运算符组合委托
见How to: Combine Delegates (Multicast Delegates)(C# Programming Guide)
【讨论】:
【参考方案4】:如果你只是想摆脱一些打字,你可以这样做
SomeEvent += MyMethod;
【讨论】:
以上是关于重载 += 事件运算符的主要内容,如果未能解决你的问题,请参考以下文章