Share via


SPEventReceiverDefinition class

Classe abstrata base que define as propriedades gerais de um receptor de eventos para fluxos de trabalho, sites, listas e itens de lista.

Inheritance hierarchy

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

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaração
Public NotInheritable Class SPEventReceiverDefinition _
    Inherits SPAutoSerializingObject
'Uso
Dim instance As SPEventReceiverDefinition
public sealed class SPEventReceiverDefinition : SPAutoSerializingObject

Comentários

Um receptor de eventos é gerenciado código que responde a eventos de SharePoint Foundation quando disparo ações específicas ocorrem. Objetos SharePoint Foundation de disparo incluem itens de lista, listas ou bibliotecas de documentos. Ações de disparo incluem atividades como adição, movimentação ou check-out. Objetos que esperam receber eventos são hosts de eventos, que são objetos, como coleções de sites, sites, listas, fluxos de trabalho ou recursos. SharePoint Foundation eventos são separados em duas categorias: eventos Before e After . No SharePoint Foundation, Before de eventos são chamados "... o ing" e After eventos são nomeados "... ed". Before eventos disparados em resposta a uma ação do usuário ocorre antes SharePoint Foundation grava dados de volta para o banco de dados de conteúdo. Eles permitem uma implementação executar verificações de segurança e validação personalizada, para que eles ocorram no início do ciclo de vida do processamento de solicitação de suporte ao cancelamento da ação do usuário. Todos os receptores de evento de Before são síncronos, e eles bloqueiam o fluxo de execução do thread de trabalho até que o manipulador de eventos seja concluída. After eventos têm manipuladores de eventos que são executados após SharePoint Foundation confirma a ação do usuário ao gravar dados de volta para o banco de dados de conteúdo. eventos de After não oferece suporte ao cancelamento da ação do usuário. Há dois tipos de processamento de eventos que podem ocorrer quando um evento After é disparado: síncrono e assíncrono. Processamento síncrono fornece a capacidade de executar o evento no mesmo segmento antes de enviar a resposta volta para o navegador da Web. Receptores de eventos assíncronos são processados por um thread separado, para que processamento não bloqueia o fluxo de execução de código. O thread de trabalho separada para o processamento assíncrono foi iniciado por métodos que residem nas classes que não a classe SPEventReceiverDefinition .

Use a propriedade EventReceivers da classe SPContentType, SPFile, SPList, SPSite, SPWebou SPWorkflow para obter a coleção de receptores de evento registrado para o objeto de dado Microsoft SharePoint Foundation . Assim que tiver uma referência à coleção de receptor de evento (do tipo SPEventReceiverDefinitionCollection), você pode usá-lo para adicionar uma nova definição de receptor de evento ou recuperar um já existente. Use o método Add() para criar um novo objeto de evento SPEventReceiverDefinition . Em seguida, defina as propriedades diferentes que compõem a definição e chamar o método Update() para salvar a definição de receptor de evento.

Use um indexador para retornar uma definição de receptor de evento único da coleção. Por exemplo, se a coleção for atribuída a uma variável chamada collEventReceiverDefinitions, use collEventReceiverDefinitions[index] em C# ou deindexde collEventReceiverDefinitions() no Visual Basic .NET, onde index é o número de índice da definição da coleção ou o GUID da definição.

Examples

O exemplo a seguir usa membros da classe SPEventReceiverDefinition para registrar um receptor de eventos síncronos ItemAdding para a lista de contatos de um site especificado.

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

Thread safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Ver também

Referência

SPEventReceiverDefinition members

Microsoft.SharePoint namespace

SPEventType