Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Articulos.Cap04
- {
- public class Broadcaster
- {
- CambioPrecioEventHandler _cambioPrecio; // Delegado privado
- public event CambioPrecioEventHandler CambioPrecio
- {
- add
- {
- _cambioPrecio += value;
- }
- remove
- {
- _cambioPrecio += value;
- }
- }
- public event CambioPrecioEventHandler CambioPrecio;
- }
- internal class EjemploEvento
- {
- // Campo que siempre que sea modificado se
- // notificará su nuevo estado a través de un evento:
- private int valor;
- // Delegado diseñado para el evento que 'monitorea'
- // el cambio de estado del campo `valor`:
- public delegate void ManipulacionCampoValorEventHandler();
- // Evento que monitorea el estado del campo `valor`:
- public event ManipulacionCampoValorEventHandler CambioNumero;
- // Constructor que inicializa el campo `numero`:
- public EjemploEvento(int numero)
- {
- EstablecerValor (numero);
- }
- protected virtual void OnValorCambio()
- {
- if (CambioNumero != null)
- {
- CambioNumero();
- }
- else
- {
- Console.WriteLine("Evento: El estado del campo `valor` ha cambiado.");
- }
- }
- public void EstablecerValor(int numero)
- {
- if (valor != numero)
- {
- valor = numero;
- OnValorCambio();
- }
- }
- }
- internal class Aplicacion
- {
- public static void Main()
- {
- // Inclusive cuando creamos una instancia de `EjemploEvento`
- // se genera el evento:
- EjemploEvento e = new EjemploEvento(5);
- // Otras operaciones que generan un evento:
- e.EstablecerValor(7);
- e.EstablecerValor(11);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement