Attribut, was sind die und was machen sie ?

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Attribut, was sind die und was machen sie ?

    Hallo zusammen.

    Mein frage ist deutlich als Title gestellt.
    Was sind und was können diese Attribut in C#/vb.net?

    Beim Googeln hab ich bisher die für mich erlösende Antwort noch nicht gefunden.
    Nun, man könnte sagen, dass sie eine Funktion/Klasse/wasauchimmer (das ist attribut-abhängig) markieren. Beispiele:
    • das ObsoleteAttribute: schreib <Obsolete> über eine Funktion und Visual Studio meckert Dir an, dass diese Funktion veraltet ist. Man kann auch einen Text dazuschreiben, der dann in VS angezeigt wird oder ein Flag setzen, der dazu führt, dass es zu einem Compilerfehler kommt.
    • das ExtensionAttribute: nur in einem Modul einsetzbar. Erweitert ein Objekt um eine Funktion, sodass man im ExtensionCode schreibt:

    VB.NET-Quellcode

    1. <Extension>
    2. Public Sub isNull(Test As String) As Boolean
    3. Return Test Is Nothing
    4. End Sub

    und später im Projekt:

    VB.NET-Quellcode

    1. Dim s = ""
    2. If s.isNull Then ...

    • das SerializableAttribute: ermöglicht es, eine Klasse zu (de)serialisieren = in einer Datei zu speichern
    • die Attribute, die Aussagen über ein Steuerelement machen; ich verwende z.B. <DesignerCategoryAttribute("")> über meiner Hauptformklasse, wenn ich (ich weiß, schlechtes Design) den Code der Hauptformklasse auf mehrere Dateien mittels Partial verteile und dann beim Doppelklick auf die Datei im Projektexplorer nicht eine Pseudo-Designer-Form öffnen will, die nur zu Fehlern führt, sondern direkt in den Code will. Das Attribut muss man natürlich auskommentieren, wenn man wieder beim Doppelklick auf die Datei den Designer haben will, um die Form zu manipulieren.
    Man braucht für die Attribute also auch immer ein Gegenstück, welches die Attribute auswertet (Stichwort Reflection), sonst machen die Attribute gar nix. Die IDE ist wohl das größte Attribut-Interpretier-Programm in der Nutzung der Attribute.

    EDIT: Zum letzten Punkt: Wenn man ein eigenes Steuerelement schreibt, kann man mittels Attribute auch ein paar IDE-Dinge festlegen:

    VB.NET-Quellcode

    1. <ToolboxItem(True),
    2. ToolboxBitmap(GetType(NameOfYourUCE), "Icon.bmp"),
    3. DefaultProperty("MaxLength"),
    4. DesignerCategory(""),
    5. Description("Beschreibung Deines UCE"),
    6. DefaultEvent("MouseDown")>


    Im späteren Programm, was ein so markiertes UCE (user control element) nutzt, führt das zu folgenden Eigenschaften:
    • Es kann in der VS-Toolbox angezeigt werden
    • hat dort ein spezielles Icon
    • es wird beim Öffnen des Eigenschaftenfensters eine bestimmte Property vormarkiert
    • hat keine Designerbearbeitungsfunktion (s.o.)*
    • hat eine individuelle Beschreibung
    • und wenn man ein Doppelklick im nutzendes Projekt auf das UCE macht, wird im Code der MouseDown-EventHandler erzeugt (so wie beim Doppelklick auf einen Button der Button_Click-Code erzeugt wird).
    *ist nur für das UCE-Projekt (also die DLL, in der der Arbeitscode des UCE steht) relevant, nicht für das Projekt, welches das UCE später nutzt
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „VaporiZed“ ()