IEventHandler return 可以是 null 以外的任何东西吗?

Can an IEventHandler return anything other than null?

我可以使用 List<T> 作为 IEventHandler 的 return 类型吗?

我想实现这样的事件处理程序接口:

public interface IMyEventHandler: IEventHandler
{
    public List<MyType> Event (Context context)
}

当我调用方法 Event 时,它 return 成功地列出了列表。但是我在调​​用者方法中没有收到列表。

通常 EventHandlers 是无效的,因为 C# 的范例表明如果您使用事件订阅者,return 值将没有明确定义的含义。

比如点击一个按钮,就可以return一个bool,表示成功(或者处理,或者...等等)

但是当您有多个事件订阅者时,它可能会变得不清楚,并且在交付结果的位置上有点模糊。

因此,您经常看到的一个小窍门是将您的列表作为事件的参数传递。

您的事件处理程序可以以事件参数的形式接收此列表,并向其中添加项目。如果事件向上冒泡,这些项目也可供其他订阅者使用。


所以底线:不要 return 来自事件处理程序的值。相反,如果你绝对必须:传递一个参数并在那里进行突变。但是,它仍然有点代码味道,所以我会寻找其他选择。