Partager via


Conception d'interfaces

Mise à jour : novembre 2007

Une interface définit les signatures d'un ensemble de membres qui doivent être fournis par les implémenteurs. Les interfaces ne peuvent pas fournir de détails d'implémentation pour les membres. Par exemple, l'interface ICollection définit des membres associés à l'utilisation de collections. Chaque classe concrète qui implémente l'interface doit fournir les détails d'implémentation de ces membres. Les classes ne peuvent hériter que d'une seule classe mais elles peuvent implémenter plusieurs interfaces. L'application des instructions suivantes permet de garantir la conception correcte de vos interfaces.

Définissez une interface si certaines fonctionnalités communes doivent être prises en charge par un ensemble de types incluant des types valeur.

Les types valeur doivent hériter de ValueType. C'est la raison pour laquelle les classes abstraites ne peuvent pas être utilisées dans le cadre de la spécification d'un contrat pour les types valeur ; vous devez utiliser à la place les interfaces.

Évitez d'utiliser les interfaces de marqueur (interfaces sans membres).

Les attributs personnalisés permettent de marquer un type. Pour plus d'informations sur les attributs personnalisés, consultez Écriture des attributs personnalisés. Il est préférable d'utiliser des attributs personnalisés lorsque vous pouvez retarder la vérification de l'attribut jusqu'au moment de l'exécution du code. Si votre scénario exige qu'une vérification soit effectuée au moment de la compilation, vous ne pouvez pas appliquer cette instruction.

Fournissez au moins un type représentant une implémentation d'une interface.

Vous êtes assuré ainsi que l'interface est bien conçue et qu'elle peut être implémentée sans trop de difficultés. La classe Int32 fournit une implémentation de l'interface IComparable.

Fournissez au moins un membre qui utilise chacune des interfaces définies (par exemple, une méthode qui prend l'interface comme paramètre ou une propriété de type interface).

Il s'agit d'un autre mécanisme qui garantit une interface bien conçue et facilement utilisable.

N'ajoutez pas de membres à une interface précédemment fournie.

L'ajout de nouveaux membres provoque une interruption du code qui implémentait la version antérieure de l'interface. C'est l'une des raisons majeures pour laquelle il est généralement conseillé d'utiliser des classes au lieu d'interfaces chaque fois que c'est possible. Pour plus d'informations, consultez Choix entre des classes et des interfaces.

Si la définition de l'interface livrée exige des membres supplémentaires, vous pouvez implémenter une nouvelle interface et les membres appropriés pour l'utiliser.

Portions Copyright 2005 Microsoft Corporation. Tous droits réservés.

Portions Copyright Addison-Wesley Corporation. Tous droits réservés.

Pour plus d'informations sur les instructions de conception, consultez le livre « Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries » de Krzysztof Cwalina et Brad Abrams, publié par Addison-Wesley, 2005.

Voir aussi

Concepts

Choix entre des classes et des interfaces

Autres ressources

Instructions de conception de types

Instructions de conception pour le développement de bibliothèques de classes