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类之外的其他类的方法。
使用SPContentType、 SPFile、 SPList、 SPSite、 SPWeb或SPWorkflow类的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 中) 成员都是线程安全的。不保证任何实例成员都是线程安全的。