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)
genanntDies 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%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%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.