Accueil

C# Interface private

by Jean-Camille Mercier 2. août 2013 20:22

Non bien sur un interface private ça n'existe pas ... par le principe même de l'interface ce n'est pas possible.

Cependant un interface internal, c'est intéressant. En effet, si l'on souhaite qu'un certain comportement de son objet soit maitrisé uniquement dans l'assembly mère, il est alors possible d'y mettre le modifier d'accès "internal". La seule chose à savoir c'est que l'interface doit obligatoirement être implémentée de manière explicite, ce qui tend à rendre les propriétés et les méthode de l'interface cachées ... ce qui est là encore logique par notre postulat de départ, et qui rend donc, d'une certaine manière, cette interface un peu "private".

Voici un exemple d'implémentation :

internal interface IEntityReference
{
   string Reference { get; private set; }
   void SetReference(int sequence);
}

public partial class Agent
{
   void IEntityReference.SetReference(int sequence) 
   { 
       this.Reference = Prefixes.AG + sequence.ToString().PadLeft(8, '0'); 
   }
}

Que l'on appel donc obligatoirement ainsi :

((IEntityReference)monAgent).SetReference(547);

Car vous ne trouverez pas la méthode dans l'intellisens : presque private non ?