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 来自事件处理程序的值。相反,如果你绝对必须:传递一个参数并在那里进行突变。但是,它仍然有点代码味道,所以我会寻找其他选择。
我可以使用 List<T>
作为 IEventHandler
的 return 类型吗?
我想实现这样的事件处理程序接口:
public interface IMyEventHandler: IEventHandler
{
public List<MyType> Event (Context context)
}
当我调用方法 Event
时,它 return 成功地列出了列表。但是我在调用者方法中没有收到列表。
通常 EventHandlers
是无效的,因为 C# 的范例表明如果您使用事件订阅者,return 值将没有明确定义的含义。
比如点击一个按钮,就可以return一个bool,表示成功(或者处理,或者...等等)
但是当您有多个事件订阅者时,它可能会变得不清楚,并且在交付结果的位置上有点模糊。
因此,您经常看到的一个小窍门是将您的列表作为事件的参数传递。
您的事件处理程序可以以事件参数的形式接收此列表,并向其中添加项目。如果事件向上冒泡,这些项目也可供其他订阅者使用。
所以底线:不要 return 来自事件处理程序的值。相反,如果你绝对必须:传递一个参数并在那里进行突变。但是,它仍然有点代码味道,所以我会寻找其他选择。