Warum verwenden wir die Memberless-Schnittstelle?

7

Was ist der Zweck, eine Schnittstelle ohne Mitglieder zu schreiben?

INamingContainer ist ein Beispiel in .NET Framework. Und es wird in MSDN als beschrieben:

  

Identifiziert ein Container-Steuerelement, das   erstellt einen neuen ID-Namespace innerhalb eines   Kontrollhierarchie des Seitenobjekts Dies   ist nur eine Marker-Schnittstelle.

Wird es nur für diese Art von Blöcken verwendet:

%Vor%

Oder gibt es andere Vorteile davon?

BEARBEITEN: Es wurde Marker Interface Pattern (danke Preet)

genannt     
Canavar 17.03.2009, 07:37
quelle

4 Antworten

8

Dies stellt sicher, dass Sie eine Sammlung von Objekten als denselben Typ behandeln und dann einige Operationen für diesen Typ ausführen können (Sie wissen, dass er von einem Objekt erben muss).

Denken Sie daran wie Attribute. Es ist Typ Metadaten.

Sie möchten möglicherweise auch eine Operation an einem bekannten Typ ausführen (z. B. System.Web.UI.Control), führen diese Operation jedoch nur durch, wenn der Typ von einer bestimmten Schnittstelle (z. B. INamingContainer) erbt.

%Vor%     
Jonathan Parker 17.03.2009, 07:40
quelle
10

Memberlose Schnittstellen werden verwendet, um Mix-ähnliche Funktionen in C # bereitzustellen. Also eine Klasse A gegeben:

%Vor%

Sie können ihm zusätzliche Funktionalität (a-la multiple vererbung) geben, indem Sie eine Schnittstelle IStuff:

definieren %Vor%

dann "implementieren" es in A:

%Vor%

und dann die zusätzlichen Funktionen hinzufügen

%Vor%     
Dmitri Nesteruk 17.03.2009 07:40
quelle
8

Es ist eine Marker-Schnittstelle. Es kann verwendet werden, um Typen zu dekorieren, so dass Sie feststellen können, dass der Typ zur Laufzeit ohne Reflexion korrekt ist. Wir verwenden es, um sicherzustellen, dass die generischen Typen im Aufgerufenen korrekt sind.

    
Preet Sangha 17.03.2009 07:41
quelle
3

Um Pythonisten zu verwirren, die denken, Ducken sei cool.

    
Pete Kirkham 17.03.2009 09:50
quelle

Tags und Links