Frage

Ich kann nicht „Feld“ aufgeführt als C # Schlüsselwort überall finden. Kennt jemand den Hintergrund auf das?

War es hilfreich?

Lösung

Die C # Compiler hat in der Regel keine Probleme, herauszufinden, was Teil einer Erklärung das Attribut bezieht. Ich kann mich drei Fälle, in denen Sie könnten es verwenden:

  1. Attribute, die für die Montage gelten. Sehr sichtbar in AssemblyInfo.cs
  2. Ein Attribut auf den Rückgabewert einer P / Invoke Erklärung angewendet, [Rückkehr: MarshalAs]
  3. Nachdem das Attribut auf die Trägergröße einer Eigenschaft oder ein Ereignis ohne Zugriffsmethoden anzuwenden. Ihr Fall.

Andere Tipps

Dies ist notwendig, zum Beispiel, wenn Sie ein Ereignis als nicht-serializable sind markiert. Es gibt das Ziel, das das Attribut bezieht.

Es ist ein Teil der Attribut Ziel Syntax. Von der Spezifikation :

attribute-target:
    field
    event
    method
    param
    property
    return
    type

Siehe auch die Dokumentation für NonSerializedAttribute :

  

Um die NonSerializedAttribute Klasse auf ein Ereignis gilt, setzen Sie das Attribut Standort Feld, wie in dem folgenden C # -Code gezeigt.

     

[field:NonSerializedAttribute()]

     

public event ChangedEventHandler Changed;

Dies soll Sie NonSerialized Attribut auf den Feldern setzen, damit dies ist nützlich bei der Serialisierung von Veranstaltungen.

Zum Beispiel würde dies gibt Ihnen einen Übersetzungsfehler

[NonSerialized]
public event SomeEventHandler SomeEvent;

Um dies zu beheben Sie haben field: verwenden

[field:NonSerialized]
public event SomeEventHandler SomeEvent;

Mehr zu dieser hier - Delegierten und Serialisierung

Die NonSerializedAttribute gilt nur für Felder, können Sie es wie folgt:

[NonSerialized]
public string myString;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top