我可以有类似 List<T>
的东西吗?作为 IEventHandler
的返回类型?
我想实现这样的事件处理程序接口(interface):
public interface IMyEventHandler: IEventHandler
{
public List<MyType> Event (Context context)
}
当我调用方法时 Event
,它成功返回列表。但是我没有在调用方方法中收到列表。
最佳答案
一般来说,EventHandlers
是无效的,因为 C# 的范例表明,如果您使用事件订阅者,返回值将没有明确定义的含义。
例如,点击一个按钮,将能够返回一个 bool 值,表示成功(或已处理,或...等)
但是当您有多个事件订阅者时,它可能会变得不清楚,并且对于将结果传递到哪里有点模糊。
因此,您经常看到的一个小 hack 是传递(在本例中是您的列表)作为事件的参数。
您的事件处理程序可以以事件参数的形式接收此列表,并向其中添加项目。如果事件向上冒泡,那么这些项目也可供其他订阅者使用。
所以底线是:不要从事件处理程序返回值。相反,如果你绝对必须:传递一个参数并在那里进行突变。但是,它仍然有点代码味道,所以我会寻找其他选择。
关于c# - IEventHandler 能否返回 null 以外的任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57252605/