c# - IEventHandler 能否返回 null 以外的任何内容?

标签 c# asp.net orchardcms

我可以有类似 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/

相关文章:

c# - ConnectionStrings 或 AppSettings 的存储库

C#帮助使用 quartz 实时配置间隔

c# - 如何在 Global.asax 中获取来自另一个 .aspx 页面的 log4net 日志记录信息?

asp.net - Orchard CMS - 刚刚通过 WPI 安装,给出错误 500

C# WebRequest 返回 401

c# - VS 2015 将警告标记为错误

c# - 获取 JSON 对象节点

c# - 如何验证 documentdb 存储过程 REST 调用

iis-7 - 我的 godaddy 托管的 Orchard 网站被抛出页面无法显示,因为发生了内部服务器错误

orchardcms - 我如何将表单添加到 Orchard Project 中的页面?