1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| using System;
namespace essaiEventDoubleAbonnement
{
class Program
{
static void Main(string[] args)
{
Class1 obj = new Class1();
SingletonEventHandler grandeOreil = new SingletonEventHandler();
EventHandler callback1 = new EventHandler(Callback);
EventHandler callback2 = new EventHandler(Callback2);
Console.WriteLine("Premiere injection de callback retourne : {0}", grandeOreil.Abonne(obj,"GoStarted",callback1));
Console.WriteLine("Premiere injection de callback2 retourne : {0}", grandeOreil.Abonne(obj, "GoStarted", callback2));
Console.WriteLine("Deuxieme injection de callback2 retourne : {0}\r\n", grandeOreil.Abonne(obj, "GoStarted", callback1));
Console.WriteLine("Ce qui nous donne à l'appel de GO :\r\n");
obj.Go();
Console.WriteLine("\r\nPresse Entrée pour la suite\r\n");
Console.Read();
Console.WriteLine("On desabonne Callback1");
grandeOreil.Desabonne(obj, "GoStarted", callback1);
Console.WriteLine("Ce qui nous donne à l'appel de GO :\r\n");
obj.Go();
Console.WriteLine("\r\nPresse Entrée pour la suite\r\n");
Console.Read();
Console.WriteLine("Juste pour le plaisir on va désabonner une callback(3) malgres qu'on ne soit pas passé par grande oreille ;)\r\n");
EventHandler callback3 = new EventHandler(Callback3);
obj.GoStarted += callback3;
Console.WriteLine("petit go apres avoir court circuité grandeoreille : ");
obj.Go();
Console.WriteLine("\r\ndésabonne callback3, puis ptit go pour terminer : ");
grandeOreil.Desabonne(obj, "GoStarted", callback3);
obj.Go();
Console.WriteLine("\r\nOk cool ! bon pour finir, on va lui donner ce qu'il ne faut pas !");
Console.WriteLine("\r\nPresse Entrée pour la suite\r\n");
Console.Read();
Console.WriteLine("quand on ne donne pas le bon nom d'evenement:\r\n");
try
{
grandeOreil.Abonne(obj,"EventFantomme",callback3);
}
catch(Exception e)
{
Console.WriteLine(String.Format("ERREUR : {0}",e.Message));
}
Console.WriteLine("\r\nPresse Entrée pour la suite\r\n");
Console.Read();
Console.WriteLine("quand l'emeteur est null:\r\n");
try
{
grandeOreil.Abonne(null,"GoStarted",callback3);
}
catch(Exception e)
{
Console.WriteLine(String.Format("ERREUR : {0}",e.Message));
}
Console.WriteLine("\r\nPresse Entrée pour la suite\r\n");
Console.Read();
Console.WriteLine("quand le eventHandler est null:\r\n");
try
{
EventHandler badHandler = null;
grandeOreil.Abonne(null, "GoStarted", badHandler);
}
catch (Exception e)
{
Console.WriteLine(String.Format("ERREUR : {0}", e.Message));
}
Console.WriteLine("\r\nPresse Entrée pour la suite\r\n");
Console.Read();
Console.WriteLine("enfin quand le type du eventHandler n'est pas le bon !\r\n");
try
{
ConsoleCancelEventHandler handlerDeMauvaisType = new ConsoleCancelEventHandler(CallBackBidon);
grandeOreil.Abonne(obj, "GoStarted", handlerDeMauvaisType);
}
catch (Exception e)
{
Console.WriteLine(String.Format("ERREUR : {0}", e.Message));
}
Console.WriteLine("\r\nPresse Entrée pour QUITTER\r\n");
Console.Read();
}
public static void Callback(object sender, EventArgs e)
{
Console.WriteLine("Callback appellée");
}
public static void Callback2(object sender, EventArgs e)
{
Console.WriteLine("Callback2 appellée");
}
public static void Callback3(object sender, EventArgs e)
{
Console.WriteLine("Callback3 appellée");
}
public static void CallBackBidon(object blabla, ConsoleCancelEventArgs e)
{
}
}
public class Class1
{
public event EventHandler GoStarted;
public Delegate[] Combien()
{
return GoStarted.GetInvocationList();
}
public void Go()
{
if (GoStarted != null)
GoStarted(this, new EventArgs());
}
}
} |
Partager