Compartilhar via


CA1009: Declarar os manipuladores de eventos corretamente

TypeName

DeclareEventHandlersCorrectly

CheckId

CA1009

<strong>Categoria</strong>

Microsoft.design

Alteração significativa

Quebrando

Causa

Um delegado que manipula um evento público ou protegido não tem a assinatura correta, retornar o tipo ou nomes de parâmetro.

Descrição da regra

Métodos manipuladores de eventos utilizam dois parâmetros.A primeira é do tipo System.Object e é chamado de 'remetente'.Este é o objeto que disparou o evento.O segundo parâmetro é do tipo System.EventArgs e é chamado de 'e'.São os dados que está associados com o evento.Por exemplo, se o evento é gerado sempre que um arquivo for aberto, os dados do evento normalmente contém o nome do arquivo.

Métodos de manipulador de eventos não devem retornar um valor.No C# linguagem de programação, isso é indicado pelo tipo de retorno void.Um manipulador de eventos pode chamar vários métodos de vários objetos.Se os métodos eram permitidos para retornar um valor, ocorreriam diversos valores de retorno para cada evento, e somente o valor do último método que foi invocado estaria disponível.

Como corrigir violações

Para corrigir uma violação desta regra, corrija a assinatura, tipo de retorno ou nomes de parâmetro do delegado.Para obter detalhes, consulte o exemplo a seguir.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

O exemplo a seguir mostra um delegado que é adequado à manipulação de eventos.Os métodos que podem ser chamados por esse manipulador de eventos está de acordo com a assinatura que está especificada nas diretrizes de Design.AlarmEventHandleré o nome do tipo do delegado.AlarmEventArgsderiva da classe base de dados de eventos, EventArgs, e suspensões alarmar os dados do evento.

Imports System

Namespace DesignLibrary

   Public Delegate Sub AlarmEventHandler(sender As Object, e As AlarmEventArgs)

   Public Class AlarmEventArgs
      Inherits EventArgs
   End Class

End Namespace
using System;

namespace DesignLibrary
{
   public class AlarmEventArgs : EventArgs {}
   public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
}
using namespace System;

namespace DesignLibrary
{
   public ref class AlarmEventArgs : public EventArgs {};
   public delegate void AlarmEventHandler(
      Object^ sender, AlarmEventArgs^ e);
}

Regras relacionadas

CA2109: Manipuladores de eventos visíveis de revisão

Consulte também

Referência

System.EventArgs

System.Object

Outros recursos

Delegados e eventos