Wenn Sie die .NET Framework-Assemblys durchsuchen und einen Drilldown in die Basisklassen für eines der Standardobjekte durchführen, werden Sie viele Schnittstellen (Mitglieder mit dem Namen ISomeName) bemerken.
Schnittstellen dienen im Wesentlichen zur Implementierung großer oder kleiner Frameworks. Bei Schnittstellen ging es mir genauso, bis ich ein eigenes Framework schreiben wollte. Ich fand auch heraus, dass das Verständnis von Schnittstellen mir half, Frameworks viel schneller zu lernen. In dem Moment, in dem Sie für fast alles eine elegantere Lösung schreiben möchten, werden Sie feststellen, dass eine Benutzeroberfläche sehr sinnvoll ist. Es ist wie eine Methode, eine Klasse die passende Kleidung für den Job anziehen zu lassen. Noch wichtiger ist, dass Schnittstellen es Systemen ermöglichen, sich viel selbst zu dokumentieren, da komplexe Objekte weniger komplex werden, wenn die Klasse Schnittstellen implementiert, was zur Kategorisierung ihrer Funktionalität beiträgt.
Klassen implementieren Schnittstellen, wenn sie explizit oder implizit an einem Framework teilnehmen möchten. IDisposable ist beispielsweise eine allgemeine Schnittstelle, die eine Methodensignatur für die beliebte und nützliche Dispose () -Methode bereitstellt. In einem Framework müssen Sie oder ein anderer Entwickler nur wissen, dass ((IDisposable) myObject) .Dispose () verfügbar ist, um zu Bereinigungszwecken aufgerufen zu werden, wenn es IDisposable implementiert.
KLASSISCHES BEISPIEL: Ohne Implementierung der IDisposable-Schnittstelle können Sie das Schlüsselwortkonstrukt "using ()" in C # nicht verwenden, da jedes als Parameter angegebene Objekt implizit in IDisposable umgewandelt werden kann.
KOMPLEXES BEISPIEL: Ein komplexeres Beispiel wäre die System.ComponentModel.Component-Klasse. Diese Klasse implementiert sowohl IDisposable als auch IComponent. Die meisten, wenn nicht alle .NET-Objekte, denen ein visueller Designer zugeordnet ist, implementieren IComponent, sodass die IDE mit der Komponente interagieren kann.
SCHLUSSFOLGERUNG: Wenn Sie mit .NET Framework vertraut werden, müssen Sie als Erstes auf eine neue Klasse im Objektbrowser oder im (.NET) Reflector-Tool ( http://www.red-gate.com ) stoßen / products / Reflector / ) überprüft, von welcher Klasse es erbt und welche Schnittstellen es implementiert. .NET Reflector ist sogar noch besser als der Objektbrowser, da Sie damit auch die abgeleiteten Klassen anzeigen können. Auf diese Weise können Sie alle Objekte kennenlernen, die von einer bestimmten Klasse stammen, und so möglicherweise Informationen zu Framework-Funktionen erhalten, von denen Sie nicht wussten, dass sie existieren. Dies ist besonders wichtig, wenn dem .NET Framework aktualisierte oder neue Namespaces hinzugefügt werden.