Neste artigo vou apresentar os conceitos relacionados ao delegate EventHandler usando a linguagem C#.. |
O delegate EventHandler |
Você sabe o que faz o delegate EventHandler ?
Ele representa um método que vai manipular um evento que não possui dados.
Você sabe o que faz o delegate EventHandler<T> ?
Ele representa um método que vai manipular um evento que possui dados.
Dessa forma o delegate EventHandler é um delegate predefinido que representa especificamente um método manipulador de eventos para um evento que não gera dados. Se o evento gerar dados, você deve usar o delegate genérico EventHandler <TEventArgs>.
Acha pouco !!!!
O
modelo de evento no .NET Framework é baseado em ter um delegate do evento
que conecta um evento com seu manipulador. Para disparar um evento, são
necessários dois elementos:
- Um delegate que identifica o método que proporciona
a resposta ao evento;
- Opcionalmente, uma classe que contém os dados do evento, se o evento
fornecer dados;
O delegate é um tipo que define uma assinatura, isto é, o tipo de valor de
retorno e uma lista de parâmetros de tipos para um método. Você pode usar o
tipo delegate para declarar uma variável que pode se referir a qualquer
método com a mesma assinatura que o delegate.
Para associar o evento com o método que manipulará o evento, adicione uma instância do delegate ao evento. O manipulador de eventos é chamado sempre que o evento ocorrer, a menos que você remova o delegate.
Como um evento pode ter vários manipuladores, usando a sintaxe do manipulador de eventos (EventHandler), podemos criar um sistema de notificação. Atribuímos métodos adicionais sem alterar outras partes do código e com isso temos que nosso código fica fácil de manter.
Vamos ver como isso funciona...
Usando o delegate EventHandler
Vamos criar uma aplicação Console Application usando o Visual Studio 2015 Community com o nome UsandoEventHandler
Se a implementação da interface foi feita corretamente o evento será disparado sempre que o valor da propriedade do objeto for alterada.
Para testar vamos incluir o código abaixo no arquivo Program.cs do projeto:
using System;
namespace UsandoEventHandler
// Definimos um EventHandler usando a palavra chave delegate
class Program
// A palavra chave event que cria um evento.
static void Main(string[] args) // Invoca o evento } static void Somar() static void Subtrair() static void Multiplicar() static void
Dividir() |
No código o evento OnCalcular possui 4 instâncias de métodos adicionados na sua lista de invocação usando o operador +=. (Este operador não tem nada a ver com o operador aritmético de adição)
Na lista de invocação do evento OnCalcular, adicionamos 4 eventos: Somar, Subtrair e duas instâncias de Multiplicar.
Quando o método Invoke for chamado, cada um destas instâncias de métodos serão chamadas e o resultado será exibido no console.
Assim vemos que usando eventos podemos adicionar métodos que serão disparados em um evento externo.
Veja que quando chamamos o método Invoke para o evento, não precisamos conhecer todos os manipuladores que foram adicionados. Isso reduz a complexidade e facilita a manutenção do código.
Um evento é um membro que permite que um objeto ou classe forneça notificações.
Dessa forma podemos usar eventos para realizar notificações de forma que outras partes do programa podem tratar esses eventos com seus manipuladores.
Executando o projeto iremos obter o seguinte resultado:
Pegue o
projeto aqui :
UsandoEventHandler.zip
Porque a palavra da cruz é loucura para os que perecem; mas para nós, que
somos salvos, é o poder de Deus.
Porque está escrito: Destruirei a sabedoria dos sábios, E aniquilarei a
inteligência dos inteligentes.
1 Coríntios 1:18,19
Referências:
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net
NET - Design Patterns - Uma abordagem Prática - Macoratti.net