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

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

March 29, 2011

2 min read

Hugo Lassiège
@hugolassiege

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.


Partager sur :