Geschachtelte Typen
Ein geschachtelter Typ ist ein Typ, der ein Member eines anderen Typs ist. Geschachtelte Typen müssen eng mit dem zugehörigen deklarierten Typ verknüpft sein und dürfen nicht für allgemeine Zwecke verwendbar sein. Für einige Entwickler sind geschachtelte Typen verwirrend, und sie sollten nur öffentlich sichtbar sein, wenn ein zwingender Grund dafür vorliegt. In einer gut entworfenen Bibliothek sollten Entwickler nur selten geschachtelte Typen zum Instanziieren von Objekten oder Deklarieren von Variablen verwenden müssen.
Geschachtelte Typen sind sinnvoll, wenn der deklarierende Typ Instanzen des geschachtelten Typs verwendet und erstellt und die Verwendung des geschachtelten Typs nicht in öffentlichen Membern verfügbar gemacht wird.
Verwenden Sie geschachtelte Typen, wenn sich aufgrund der Beziehung zwischen dem geschachtelten Typ und seinem äußeren Typ eine Semantik für den Memberzugriff empfiehlt.
Da ein geschachtelter Typ als Member des deklarierenden Typs behandelt wird, kann der geschachtelte Typ auf alle anderen Member des deklarierenden Typs zugreifen.
Verwenden Sie keine öffentlichen geschachtelten Typen als logisches Gruppierungskonstrukt, sondern verwenden Sie hierfür Namespaces.
Vermeiden Sie geschachtelte Typen, die öffentlich verfügbar gemacht werden. Die einzige Ausnahme hiervor ist ein seltenes Szenario, in dem Variablen des geschachtelten Typs deklariert werden müssen, z. B. beim Erstellen von Unterklassen oder anderen erweiterten Anpassungsszenarien.
Verwenden Sie keine geschachtelten Typen, wenn die Wahrscheinlichkeit besteht, dass außerhalb des deklarierenden Typs auf den geschachtelten Typ verwiesen wird.
In allgemeinen Szenarien sollten die Deklaration von Variablen und die Objektinstanziierung für geschachtelte Typen nicht erforderlich sein. Beispielsweise sollte ein Ereignishandlerdelegat, der ein für eine Klasse definiertes Ereignis behandelt, nicht in der Klasse geschachtelt sein.
Verwenden Sie keine geschachtelten Typen, wenn sie von Clientcode instanziiert werden müssen. Wenn ein Typ über einen öffentlichen Konstruktor verfügt, sollte dieser nicht geschachtelt sein.
Ein geschachtelter Typ wird im Idealfall nur von seinem deklarierenden Typ instanziiert und verwendet. Wenn ein geschachtelter Typ über einen öffentlichen Konstruktur verfügt, bedeutet dies, dass die Verwendung des Typs von seinem deklarierenden Typ abweicht. Im Allgemeinen sollte ein geschachtelter Typ keine Aufgaben für andere Typen als seinen deklarierenden Typ ausführen. Wenn ein Typ für einen allgemeineren Zweck konzipiert ist, sollte er nicht geschachtelt sein.
Definieren Sie einen geschachtelten Typ nicht als Member einer Schnittstelle. Dieses Konstrukt wird von vielen Sprachen nicht unterstützt.
Copyright für einzelne Teile 2005 Microsoft Corporation. Alle Rechte vorbehalten.
Copyright für einzelne Teile Addison-Wesley Corporation. Alle Rechte vorbehalten.
Weitere Informationen zu Entwurfsrichtlinien finden Sie unter „Framework-Entwurfs-Richtlinien: Idiome, Konventionen und Muster für wiederverwendbare .NET-Bibliotheken von Krzysztof Cwalina“ book und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.