Compartilhar via


CA1009: declarar manipuladores de eventos corretamente

TypeName

DeclareEventHandlersCorrectly

CheckId

CA1009

Categoria

Microsoft.Design

Alteração Significativa

Quebra

Causa

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

Descrição da Regra

Os métodos do manipulador de eventos usam dois parâmetros.O primeiro é do tipo Object e é denominado “remetente”.Este é o objeto que gerou o evento.O segundo parâmetro é do tipo EventArgs e é denominado “e”.Estes são os dados associados ao evento.Por exemplo, se o evento é gerado sempre que um arquivo é aberto, os dados de evento normalmente contêm o nome do arquivo.

Os métodos do manipulador de eventos não devem retornar um valor.Na linguagem de programação C#, isso é indicado por tipo de retorno void.Um manipulador de eventos pode chamar vários métodos em vários objetos.Se os métodos eram permitidos retornar um valor, vários valores de retorno se para cada evento, e apenas o valor do método mais recente que foi invocado estariam disponíveis.

Como Corrigir Violações

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

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

O exemplo a seguir mostra um delegado que é indicado para tratar eventos.Os métodos que podem ser chamadas pelo manipulador de eventos seguem à assinatura que é especificada nas diretrizes de design.AlarmEventHandler é o nome do tipo delegado.AlarmEventArgs é derivado da classe base de dados do evento, EventArgs, e as propriedades alarmam 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: revisar manipuladores de eventos visíveis

Consulte também

Referência

EventArgs

Object

Outros recursos

Delegados e eventos