Design Time Support: Häufig verwendete Attribute im Überblick

Beschreibung
Zur Entwicklung eines Steuerelementes oder ähnliches gehören nicht nur funktionierender Code und eine hohe Flexibilität, sondern auch eine effektive und effiziente Verwendung zur Design-Time im Visual Studio. Es werden dabei die verschiedensten Möglichkeiten über Attribute angeboten. Welche das im Detail sind zeigen wir in diesem Tipp.
Attribute für Klassen
Nachfolgend sind einige Attribute aufgeführt, die auf Klassen angewendet werden können.
VBC#
1
<System.Diagnostics.DebuggerStepThrough()>
1
Kein Code vorhanden
Mit diesem Attribut können wir festlegen, dass es unmöglich ist mit dem Debugger schrittweise die Codeausführungen in dieser Klasse nachzuverfolgen.
VBC#
1
<System.ComponentModel.DefaultEvent(...)>
1
Kein Code vorhanden
Mit diesem Attribut lässt sich ein Standardereignis festlegen, indem als erster Parameter der Name des Ereignisses angegeben wird. Dieses Ereignis ist standardmäßig im Eigenschaftenfenster von Visual Studio markiert und wird bei einem Doppelklick auf das Steuerelement mit der entsprechenden Signatur im Code eingefügt.
VBC#
1
<System.ComponentModel.DefaultProperty(...)>
1
Kein Code vorhanden
Ähnlich dem DefaultEvent kann auch eine Standardeigenschaft festgelegt werden. Auch hier wird als erster Parameter der Name der Eigenschaft erwartet. Im Eigenschaftfenster von Visual Studio wird diese Eigenschaft standardmäßig markiert.
VBC#
1
<System.ComponentModel.Description(...)>
1
Kein Code vorhanden
Damit jeder Anwender weiß, wofür dieses Steuerelement entwickelt wurde können wir eine Beschreibung hinzufügen, indem wir uns dieses Attributes bedienen. Dort können wir als ersten Parameter eine entsprechende Beschreibung angeben. Es gilt das gleiche wie für das ToolboxBitmapAttribute. Die Beschreibung steht für das aktuelle Projekt, in welchem das Steuerelement entwickelt wird, nicht zur Verfügung.
VBC#
1
<System.Serializable()>
1
Kein Code vorhanden
Um eine Klasse serialisieren zu können ist dieses Attribut notwendig. Damit können die Inhalte einer Instanz dieser Klasse in einer Datei gespeichert werden.
VBC#
1
<System.Drawing.ToolboxBitmap(GetType(...))>
1
Kein Code vorhanden
Für Steuerelemente könnte dieses Attribut sehr interessant sein, denn hiermit lässt sich ein individuelles Bild für die ToolBox festlegen. Beispielsweise können wir, wie im Code zu sehen, ein System.Type-Objekt angeben, von welchem das Bild verwendet werden soll. Alternativ können wir aber auch ein eigenes Bild verwenden, indem wir den Pfad zu dem Bild angeben. Dabei ist aber zu beachten, dass das Bild nicht in der ToolBox des Projektes zu sehen ist, in dem wir das Steuerelement entwickeln. Wir werden dort immer das standardmäßige blaue Zahnrad sehen. Falls das Steuerelement in eine Bibliothek kompiliert wurde und wir diese DLL-Datei der ToolBox hinzufügen, sollte allerdings das von uns angegebene Bild zu sehen sein.
Attribute für Eigenschaften
Nachfolgend sind einige Attribute aufgeführt, die auf Eigenschaften angewendet werden können.
VBC#
1
<System.ComponentModel.Browsable(...)>
1
Kein Code vorhanden
Mit diesem Attribut können wir festlegen, ob diese Eigenschaft im Eigenschaftenfenster von Visual Studio angezeigt werden soll. Speziell für Eigenschaften, die nur ReadOnly sind oder bei denen es kaum sinnvoll ist, diese im Designer festzulegen, ist dieses Attribut hilfreich.
VBC#
1
<System.ComponentModel.Category(...)>
1
Kein Code vorhanden
Jeder Eigenschaft können wir einer Kategorie zuordnen. Das Attribut nimmt als Parameter den Namen der Kategorie entgegen, in welcher sich diese Eigenschaft befinden soll. Das Attribut ist allerdings nur dann sinnvoll, wenn das Eigenschaftenfenster im Visual Studio die Anzeige "Nach Kategorien" aktiviert hat. Damit lässt sich eine übersichtliche Gruppierung von Eigenschaften realisieren.
VBC#
1
<System.ComponentModel.DefaultValue(GetType(...), ...)>
1
Kein Code vorhanden
DefaultValue gibt den Standardwert einer Eigenschaft an. Der erste Parameter muss ein System.Type-Objekt sein, während der zweite Parameter ein System.String ist, der in den angegebenen System.Type konvertiert werden kann. Im Eigenschaftenfenster von Visual Studio bewirkt das auf den ersten Blick nicht viel, doch wenn wir einen Rechtsklick auf die Eigenschaft ausführen, dann ist der Menüpunkt "Zurücksetzen" nicht mehr grau. Bei einem Klick auf diesen Menüpunkt wird also der System.String, den wir im zweiten Parameter bei DefaultValue angegeben haben, in den angegebenen Typ konvertiert und der Eigenschaft zugewiesen. Alle abweichenden Werte werden übrigens fett dargestellt.
VBC#
1
<System.ComponentModel.Description(...)>
1
Kein Code vorhanden
Ein weiteres wichtiges Attribut stellt Description dar. Dort können wir eine Zeichenkette angeben, die als Beschreibung im Eigenschaftenfenster von Visual Studio im unteren Bereich angezeigt werden soll. Damit kann der Anwender sofort erkennen, was diese Eigenschaft bewirkt.
VBC#
1
<System.Obsolete(..., ...)>
1
Kein Code vorhanden
Ein vielleicht weniger verwendetes Attribut stellt Obsolete dar, ist aber daher nicht weniger wichtig. Vor allem, wenn wir unsere Klassen ständig weiterentwickeln, somit einige Eigenschaften veraltet sind und keine Auswirkung mehr haben. Dafür können wir dieses Attribut angeben und können im ersten Parameter eine Beschreibung anfügen, die eine alternative Lösung beschreibt. Der zweite Parameter legt fest, ob die Verwendung dieser Eigenschaft als ein Fehler betrachtet werden soll. Wenn True, dann wird ein Kompilieren des Projektes nicht möglich sein, falls diese Eigenschaft verwendet wird.
Attribute für Methoden
Nachfolgend sind einige Attribute aufgeführt, die auf Methoden angewendet werden können.
VBC#
1
<System.Diagnostics.DebuggerStepThrough()>
1
Kein Code vorhanden
Mit diesem Attribut können wir festlegen, dass es unmöglich ist mit dem Debugger schrittweise die Codeausführungen nachzuverfolgen.
VBC#
1
<System.Obsolete(..., ...)>
1
Kein Code vorhanden
Auch bei Methoden haben wir die Möglichkeit dieses Attribut anzugeben. Im ersten Parameter können wir eine Beschreibung anfügen, die eine alternative Lösung beschreibt. Der zweite Parameter legt fest, ob die Verwendung dieser Methode als ein Fehler betrachtet werden soll. Wenn True, dann wird ein Kompilieren des Projektes nicht möglich sein, falls diese Methode verwendet wird.