Класс 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 FoundationBefore события называются "... ing» и After события называются"... ed ". Before события срабатывают в ответ на действие пользователя, происходит перед SharePoint Foundation записывает данные в базе данных. Они позволяют реализацию для выполнения проверок безопасности и допустимости, поэтому они происходят на раннем этапе жизненного цикла обработки запроса поддерживать отмену действия пользователя. Все приемники событий Before являются синхронными, а их заблокировать поток выполнения потока работ до завершения обработчика событий. After события имеют обработчики событий, которые выполняются после фиксации SharePoint Foundation действия пользователя при записи данных обратно в базу данных содержимого. After события не поддерживают отмену действий пользователя. Существует два типа обработки событий, возникающих при возникновении события After : синхронные и асинхронные. Синхронная обработка позволяет выполнить событие в том же потоке, перед отправкой в обозреватель веб-ответ. Приемники событий асинхронного обрабатываются в отдельном потоке, поэтому обработка не блокирует поток выполнения кода. Поток для асинхронной обработки отдельных заданий запускается методами, которые находятся в классах, отличный от класса SPEventReceiverDefinition .

Свойство EventReceivers класса SPContentType, SPFile, SPList, SPSite, SPWebили SPWorkflow для получения коллекции приемников событий, зарегистрированный для данного Microsoft SharePoint Foundation объекта. При наличии ссылки на события приемника коллекцию (типа SPEventReceiverDefinitionCollection), его можно использовать для добавления нового определения приемника событий или получить существующий. Метод Add() используется для создания нового объекта события SPEventReceiverDefinition . Затем задать различные свойства, составляющие определение и вызовите метод Update() , чтобы сохранить определение приемника событий.

Используйте индексатор для получения определение приемника событий одного из коллекции. Например если коллекция присваивается переменной с именем collEventReceiverDefinitions, используйтеindexcollEventReceiverDefinitions[] в C# илиindexcollEventReceiverDefinitions() в 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

Потокобезопасность

Любые общедоступные элементы static (Shared в Visual Basic) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.

См. также

Справочные материалы

Элементы SPEventReceiverDefinition

Пространство имен Microsoft.SharePoint

SPEventType