Partilhar via


Declarar manipuladores de eventos corretamente

TypeName

DeclareEventHandlersCorrectly

CheckId

CA1009

Category (Categoria)

Microsoft.Design

Quebrando alterar

Quebrando

Causa

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

Descrição da regra

manipulador de eventos métodos utilizam dois parâmetros.A primeira é do tipo System.Object e é nomeada 'Remetente'. Esse é o objeto que disparou o evento.O segundo parâmetro é do tipo System.EventArgs e é chamado de 'e'. Isso é o dado associado ao evento.Por exemplo, se o evento é disparado sempre que um arquivo for aberto, os dados do evento geralmente contém o nome do arquivo.

manipulador de eventos métodos não devem retornar um valor.Translation from VPE for Csharp linguagem de programação, isso é indicado pelo tipo de retorno void. Um evento manipulador pode chamar vários métodos de vários objetos.Se os métodos foram permissão para retornar um valor, seria vários valores de retorno para cada evento, e apenas o valor do último método invocado seria disponível.

Como corrigir violações

Para corrigir uma violação dessa 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 adequado para a manipulação de eventos.Os métodos que podem ser chamados por esse manipulador de eventos está de acordo com a assinatura especificada nas diretrizes de design.AlarmEventHandler é o nome do tipo do delegado. AlarmEventArgs deriva a classe base de dados de eventos EventArgs, e armazena dados de eventos do alarme.

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

Revisão visível evento manipuladores

Consulte também

Conceitos

Eventos e representantes

Referência

System.EventArgs

System.Object