Interfaces C#. Implementation implicite versus implementation explicite

Interfaces C#. Implementation implicite versus implementation explicite


Source : Stack Overflow [.net]

L’implementation implicite consiste a definir votre interface via un membre de votre classe. L’implementation explicite consiste a definir des methodes au sein de votre classe sur l’interface. Nous savons que cela semble confus, mais voici ce que nous voulons dire : IList.CopyTo serait implemente implicitement ainsi :

public void CopyTo(Array array, int index)
{
    throw new NotImplementedException();
}

et explicitement ainsi :

void ICollection.CopyTo(Array array, int index)
{
    throw new NotImplementedException();
}

La difference est que l’implementation implicite vous permet d’acceder a l’interface a travers la classe que vous avez creee en castant l’interface comme cette classe et comme l’interface elle-meme. L’implementation explicite vous permet d’acceder a l’interface uniquement en la castant comme l’interface elle-meme.

MyClass myClass = new MyClass(); // Declared as concrete class
myclass.CopyTo //invalid with explicit
((IList)myClass).CopyTo //valid with explicit.

Nous utilisons l’explicite principalement pour garder l’implementation propre, ou lorsque nous avons besoin de deux implementations. Quoi qu’il en soit, nous l’utilisons rarement.

Nous sommes certain qu’il existe d’autres raisons d’utiliser ou de ne pas utiliser l’explicite que d’autres mentionneront.

Consultez le post suivant dans ce fil pour d’excellents arguments en faveur de chaque approche.