文章 处理事件

事件是对平台中发生的操作做出反应的方式。每个事件执行器都会创建正在执行的内容副本。进程 API 用于访问平台事件。若要了解哪些事件可用,请参阅进程 API 服务。

创建事件处理程序的最佳做法是使用 IPlugin 接口的 Initialize 方法。这允许您的插件快速响应平台中的更改,并允许管理员在必要时启用或禁用您的功能。

为什么我应该在插件中处理事件

通过设置事件处理程序,您的解决方案可以在平台中发生特定事件时立即做出反应。这些事件通常围绕之前和之后的两种状态展开。这允许用户确定要在流程中的哪个阶段执行操作。

创建 Before 事件处理程序将使您能够访问将在执行特定事件之前返回的可编辑事件参数。例如,在 BeforeCreate 事件中,您可以为纯文本的字段去除 HTML 标记,然后,这些更改将应用于内部对象,并将执行保存过程。

对于 After 事件处理程序,情况正好相反 所有更改都已处理,您将收到一个只读参数。AfterCreate 事件可用于发送通知。在这种情况下,Before 事件处理程序可能会从内容中删除粗言秽语或侮辱性语言,并且在处理后可以安全地发送。这是一个重要的区别,因为无法设置或确定注册事件的顺序。

创建事件处理程序

此示例使用 IPlugin 接口的 Initialize 方法为博客文章注册 BeforeCreated 事件处理程序。然后,处理程序方法将一条消息写入事件日志。

public void Initialize()
{
    Apis.Get<Blogs>().Events.BeforeCreate += new BlogBeforeCreateEventHandler(BlogEvent_BeforeCreate);
}

private void BlogEvent_BeforeCreate(BlogBeforeCreateEventArgs blog)
{
    var message = string.Format("A blog post with the title "{0}" is about to be created.", blog.Name);
    var options = new EventLogEntryWriteOptions
    {
        Category = "Samples"
    };

    Apis.Get<EventLog>().Write(message, options);
}