Java Vs C# : Eviter les conflits de nom dans les interfaces


Warning, warning, ceci n’est pas une rubrique à troll !!

Bien qu’étant plutot spécialiste Java, je me suis mis récemment au C#. Loin des débats qui n’en finissent plus pour savoir lequel des deux p… le plus loin, je tenais à faire une petite rubrique pour lister « les trucs qui tuent » qui existent dans chaque langage et que tout bon développeur aime connaitre.

Et donc le truc qui tue du jour :

Eviter les conflits de nom dans les interfaces en C#

En java vous avez sans doute déjà eu affaire à des interfaces dont les noms rentrent en conflit, non ?

Dans le cas contraire, je vous propose un petit exemple :

public interface IInterface1
{
    void execute();
}

public interface IInterface2
{
    void execute();
}


public class MyClass implements IInterface1, IInterface2
{
      public void execute()
	  {
	     //  ?? 	  
	  }
}

Rageant n’est-ce pas ? Vous tentez de respecter un contrat identique défini par deux interfaces.

Et en C# ?

C# propose une solution intéressante à ce problème.


public interface IInterface1
{
    void Execute();
}

public interface IInterface2
{
    void Execute();
}

public class MyClass : IInterface1, IInterface2
{
	void IInterface1.Execute()
	{
         Console.WriteLine("Execute de IInterface1");
	}

    void IInterface2.Execute()
	{
         Console.WriteLine("Execute de IInterface2");
    }
}

On remarquera que les méthodes sont privées. Elles ne peuvent être appelées qu’à partir de l’interface. Ce qui est beaucoup plus propre.

Laisser un commentaire