42 votes

À quoi sert une interface vide

Je regarde nServiceBus et suis venu sur cette interface

 namespace NServiceBus
{
    public interface IMessage
    {
    }
}
 

À quoi sert une interface vide?

22voto

mattcole Points 494

Également connue sous le nom d'interface de marqueur:

http://en.wikipedia.org/wiki/Marker_interface_pattern

12voto

André Points 4833

En java Serializable est l'exemple parfait pour cela. Il ne définit aucune méthode mais chaque classe qui "implémente" doit s'assurer, qu'elle est vraiment sérialisable et ne contient aucune référence à des choses qui ne peuvent pas être sérialisées, comme les connexions à la base de données, les fichiers ouverts, etc.

9voto

Jon Skeet Points 692016

En Java, des interfaces vides étaient généralement utilisées pour les classes de «balisage» - de nos jours, les annotations étaient normalement utilisées.

C'est juste une façon d'ajouter un peu de métadonnées à une classe en disant: "Cette classe convient pour un type d'utilisation <this> " même quand aucun membre commun ne sera impliqué.

2voto

Mehrdad Afshari Points 204872

Normalement, c'est similaire aux attributs. L'utilisation d'attributs est préférable aux interfaces vides (au moins autant que FxCop le sait). Cependant .NET lui-même utilise certaines de ces interfaces comme IRequiresSessionState et IReadOnlySessionState . Je pense qu'il y a une perte de performances dans la recherche de métadonnées lorsque vous utilisez des attributs qui leur ont fait utiliser des interfaces à la place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X