当我们想要将数据传递给事件订阅者时,我们使用EventArgs(或CustomEventArgs)。
.Net提供了一个构建类型的EventHandler,它使用了构建的EventArgs类的实例作为参数。
当我需要通知订户某些操作已经结束时,例如搜索结束时,情况如何呢?我甚至不想使用不包含任何内容的EventArgs。
是否有用于发信号通知另一个类的内置类型,而不需要使用空的EventArgs?
你可以做几件事:
event MyDelegateWithoutParams MyEvent;
一起使用我希望其中一个选项符合您的喜好。我在这种情况下使用1和4(4个主要是如果只有一个“听众”)。
PS:我猜2不符合.net framework guidelines所以也许这不是最好的主意;)
我真的建议你在这里使用标准的EventHandler模式,然后通过EventArgs.Empty
;但是,你可以使用Action
作为你真正想要的事件类型 - 这很不寻常。
如果你使用普通delegates
肯定你可以做你想要的,但如果你使用events
我认为最好是坚持标准,并始终有object
发送者和EventArgs
e。
如果你真的没有从你自己的代码中解雇那些事件,那么只需将EventArgs.Empty
作为第二个参数传递。
使用操作(从https://stackoverflow.com/a/1689341/1288473复制的答案下方):
声明:
public event Action EventWithoutParams;
public event Action<int> EventWithIntParam;
呼叫:
if (EventWithoutParams != null) EventWithoutParams();
if (EventWithoutParams != null) EventWithIntParam(123);