public static void execute() { char exec = '-'; if (exec == '+') { Console.WriteLine("Exemple d'utilisation d'une Interface:\r\n"); classe1 cl1 = new classe1(); cl1.Name = "Classe1"; cl1.xcl1 = "xcl1"; cl1.Action(); // Méthode implémentée dans l'interface Iinterface1 grace à la classe d'extention ExtClass1 Iinterface1 cl2 = new classe2(); //cl2.Name = "Classe2"; // Iinterface ne permet que le GET pas le SET ((classe2)cl2).Name = "Classe2"; // contrairement à classe2 qui permet le SET //cl2.xcl2 = "xcl2"; // le type de la reference limite l'accès aux proprietes et methodes de l'interface ((classe2)cl2).xcl2 = "xcl2"; // En castant, ont y a accès --> possible uniquement si l'objet réréfencé par cl2 est bien tu type classe2 methode(cl1); // les 2 classes qui implémentent Iinterface peuvent methode(cl2); // être passée en paramètres grace aux type Iinterface utilisé dans la signature de la méthode. Iinterface1 clI1 = cl1; // Référence à cl1, limitée à l'Iinterface1 Iinterface2 clI2 = cl1; // Référence à cl1, limitée à l'Iinterface2 cl1.Move(); // Appelle le Move de la classe clI1.Move(); // Appelle le Move spécifique de l'Iinterface1 de la classe clI2.Move(); // Appelle le Move spécifique de l'Iinterface2 de la classe cl2.Move(); // Appelle le Move implémenté dans la classe Console.WriteLine("\r\n"); } }
public static void execute() { char exec = '-'; if (exec == '+') { Console.WriteLine("Exemple d'utilisation Unity:\r\n"); var container = new UnityContainer(); container.RegisterType<Iclasse1, classe1>(); string nom = "Un String"; container.RegisterInstance(nom); classe2 cl2 = new classe2(); cl2.nom = "CLASSE2"; container.RegisterInstance(cl2); container.RegisterType<classe3>(); var hc = container.Resolve<HomeController>(); hc.Index(); Console.WriteLine("\r\n"); } }
public HomeController(Iclasse1 cl1, string str, classe2 cl2, classe2 cl2Bis) { Console.WriteLine("HomeController est instancié:"); _cl1 = cl1; _str = str; Console.WriteLine(cl2.nom); cl2Bis.nom = "CLASSE2 MODIFIEE PAR UNE AUTRE REFERENCE"; Console.WriteLine(cl2.nom); //Console.WriteLine(cl3.prenom); }