Share via


SPEventReceiverDefinition 类

抽象基类定义的列表项、 列表、 网站和工作流的事件接收器的常规属性。

继承层次结构

System.Object
  Microsoft.SharePoint.Administration.SPAutoSerializingObject
    Microsoft.SharePoint.SPEventReceiverDefinition

命名空间:  Microsoft.SharePoint
程序集:  Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)

语法

声明
Public NotInheritable Class SPEventReceiverDefinition _
    Inherits SPAutoSerializingObject
用法
Dim instance As SPEventReceiverDefinition
public sealed class SPEventReceiverDefinition : SPAutoSerializingObject

备注

托管事件接收器出现响应SharePoint Foundation事件时特定触发操作的代码。触发SharePoint Foundation对象包括列表项、 列表或文档库。触发的操作包括活动,例如添加、 移动或签出。希望接收事件的对象是事件宿主,这些对象 (如网站集、 网站、 列表、 工作流或功能。SharePoint Foundation事件分为两个类别: Before事件和After事件。在SharePoint Foundation, Before事件名为"...运算"和名为After事件"...ed"。Before事件触发以响应用户操作发生之前SharePoint Foundation将数据重新写入内容数据库。它们允许执行安全检查和自定义验证,所以它们出现在请求处理周期支持取消用户操作的早期的实现。所有Before事件接收器都是同步的并它们阻止作业线程执行流,直到完成事件处理程序。After事件的事件处理程序执行后SharePoint Foundation通过将数据写回到的内容数据库提交的用户操作。After事件不支持取消用户操作。有两种类型的时引发After事件时可能发生的事件处理: 同步和异步。同步处理提供的功能来发送回浏览器的 Web 响应之前运行在相同的线程中的事件。异步事件接收器处理由单独的线程,以便处理不会阻止执行代码的流。异步处理的单独的作业线程启动由驻留在SPEventReceiverDefinition类之外的其他类的方法。

使用SPContentTypeSPFileSPListSPSiteSPWebSPWorkflow类的EventReceivers属性获取事件接收器注册为给定的Microsoft SharePoint Foundation对象的集合。对 (的类型SPEventReceiverDefinitionCollection) 的事件接收器集合的引用后,可用来添加新的事件接收器定义或检索一个现有。使用Add()方法创建新的事件SPEventReceiverDefinition对象。然后设置不同的属性组成的定义,并调用Update()方法将事件接收器定义保存。

使用索引器从集合中返回单个事件接收器定义。例如,如果集合分配给名为collEventReceiverDefinitions的变量中,使用 C# 中的collEventReceiverDefinitions[index]或collEventReceiverDefinitions(index)在 Visual Basic.NET 中,其中index是集合中定义的索引号,或者定义的 GUID。

示例

下面的示例使用SPEventReceiverDefinition类的成员的注册指定的网站的联系人列表的同步ItemAdding事件接收器。

string listName = "Contacts";
string siteURL = "https://Server/Site";
string receiverName = "Contacts Event Receiver";
int sequenceNumber = 2001;
string assemblyFullName = "Assembly_Name, Version=1.0.1777.23493, Culture=neutral, PublicKeyToken=94de0004b6e3fcc5";
string assemblyClassName = "Assembly_Name.Class_Name";
string receiverData = "Data";

SPList list = new SPSite(siteURL).OpenWeb().Lists[listName];
SPEventReceiverDefinitionCollection eventReceivers = list.EventReceivers;

using(SPSite site = new SPSite(siteURL))
{ 
   using (SPWeb web = site.OpenWeb()) 
   {
      SPList list = new SPSite(siteURL).OpenWeb().Lists[listName]; 
      SPEventReceiverDefinitionCollection eventReceivers =
         list.EventReceivers;

      SPEventReceiverDefinition eventReceiver = eventReceivers.Add();
      eventReceiver.Name = receiverName;
      eventReceiver.Synchronization =
         SPEventReceiverSynchronization.Synchronous; 
      eventReceiver.Type = SPEventReceiverType.ItemAdded;
      eventReceiver.SequenceNumber = sequenceNumber; 
      eventReceiver.Assembly = assemblyFullName ;
      eventReceiver.Class = assemblyClassName ;
      eventReceiver.Data = receiverData ;

      eventReceiver.Update();
   }
}
Dim listName As String = "Contacts"
Dim siteURL As String = "https://Server/Site"
Dim receiverName As String = "Contacts Event Receiver"
Dim sequenceNumber As Integer = 2001
Dim assemblyFullName As String = "Assembly_Name, Version=1.0.1777.23493, Culture=neutral, PublicKeyToken=94de0004b6e3fcc5"
Dim assemblyClassName As String = "Assembly_Name.Class_Name"
Dim receiverData As String = "Data"

Dim list As SPList = New SPSite(siteURL).OpenWeb().Lists(listName)
Dim eventReceivers As SPEventReceiverDefinitionCollection = list.EventReceivers

Using site As New SPSite(siteURL)
   Using web As SPWeb = site.OpenWeb()
     Dim list As SPList = New SPSite(siteURL).OpenWeb().Lists(listName)
     Dim eventReceivers As SPEventReceiverDefinitionCollection = list.EventReceivers

     Dim eventReceiver As SPEventReceiverDefinition = eventReceivers.Add()
     eventReceiver.Name = receiverName
     eventReceiver.Synchronization = SPEventReceiverSynchronization.Synchronous
     eventReceiver.Type = SPEventReceiverType.ItemAdded
     eventReceiver.SequenceNumber = sequenceNumber
     eventReceiver.Assembly = assemblyFullName
     eventReceiver.Class = assemblyClassName
     eventReceiver.Data = receiverData

     eventReceiver.Update()
   End Using
End Using

线程安全性

该类型的任何公共 静态 (已共享 在 Visual Basic 中) 成员都是线程安全的。不保证任何实例成员都是线程安全的。

另请参阅

引用

SPEventReceiverDefinition 成员

Microsoft.SharePoint 命名空间

SPEventType