25-12-2012, 20:41
un poco de eventos
No es posible llamar a los métodos almacenados en un campo delegado a través
del mismo
UN RELOJ ELEMENTAL
No es posible llamar a los métodos almacenados en un campo delegado a través
del mismo
UN RELOJ ELEMENTAL
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace eventos
{//objetos notificadores con un un campo de tipo delegado
//y al ocurrir un suceso particular ejecute los métodos del objeto interesado
//0 al instanciar objeto se ejecuta constructor de notificada
//1. delegado almacena referencia a metodo sin parametros
//2 el evento tick gestionara al delegado manejadordetiempo
//3 la clase notificada crea tiemponotificadora tiempo
//4.usamos al evento para relacionar al delegado con el metodo tiempo_tick
//5 al invocar comenzar() invoca al enento tick() el cual gestiona al metodo //de la
//clase notificada se ejecuta ese metodo
public delegate void manejadordetiempo();
//1
public class tiemponotificadora
{
public void comenzar()
{
if (tick !=null)
{
tick();
}
}
public event manejadordetiempo tick = null;
//2
}
class notificada
{
tiemponotificadora tiempo;
public notificada()
{
tiempo = new tiemponotificadora();
//3
tiempo.tick += new manejadordetiempo(tiempo_tick);
//tiempo.tick += tiempo_tick;
//en 2.0 infiere tipo el compilador automaticamente
//con metodos anonimos delegate(<parámetros>) {<instrucciones>};
//tiempo.tick += new //manejadordetiempo(tiempo_tick){Console.WriteLine("ejecuta metodo
////de clase notificada");}
// //sin necesidad de definir al metodo
//4
tiempo.comenzar();
//5
}
void tiempo_tick()
{
Console.WriteLine("ejecuta metodo tick de clase notificada");
//throw new NotImplementedException();porque logenere con //inteligience
}
static void Main(string[] args)
{
notificada obj = new notificada();
//0
Console.ReadKey();
}
}
}