Compartilhar via


Usar eventos onde for apropriado

TypeName

UseEventsWhereAppropriate

CheckId

CA1030

Category (Categoria)

Microsoft.Design

Quebrando alterar

Não separável

Causa

Um nome de método pública, protegida ou particular começa com um destes procedimentos:

  • Complemento

  • RemoveOn

  • Incêndio

  • Aumentar

Descrição da regra

Essa regra detecta os métodos que possuem nomes que normalmente seriam usados para eventos.Eventos seguem o padrão de design observador ou inscrever publicar; elas são usadas quando uma alterar no estado em um objeto deve ser comunicada a outros objetos.Se um método é chamado em resposta a uma alterar de estado claramente definido, o método deve ser chamado por um manipulador de eventos.Objetos que chame o método devem disparar eventos em vez de chamar o método diretamente.

Alguns exemplos comuns de eventos são encontrados em aplicativos de interface de usuário em que uma ação do usuário, sistema autônomo clicar um botão faz com que um segmento de código seja executado.The .NET Framework modelo de evento não é limitado a interfaces de usuário; ele deve ser usado em qualquer lugar, que você deve comunicar o estado muda para um ou mais objetos.

Como corrigir violações

Se o método é chamado quando o estado de um objeto for alterado, considere alterar o design para usar o .NET Framework modelo de evento.

Quando suprimir avisos

Eliminar um aviso essa regra se o método não funcionar com o .NET Framework modelo de evento.

Exemplo

O exemplo a seguir mostra um método que tenta se comunicar uma alterar de estado (no caso, seu tipo declarativo, catálogo, foi fechado) ao chamar um delegado.

using System;

namespace Samples
{    
    public delegate void ClosedCallback(Book book);

        public class Book    
    {         
        private ClosedCallback _ClosedCallback;

             // Violates this rule
             public void AddOnClosed(ClosedCallback callback)
             {
                  _ClosedCallback = callback;
             }

         public void Close()
         {
              _ClosedCallback(this);
         }
    }
}

A seguinte classe corrige o exemplo acima, alterando para o modelo de eventos do .NET estrutura.