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

By Hugo LassiègeMar 29, 20112 min read

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.


Share this:

Written by Hugo Lassiège

Software engineer, ex-freelance, ex-cofounder, ex-CTO. I love building things, sharing knowledge and helping others.

Copyright © 2024
 Eventuallycoding
  Powered by Bloggrify