Ich muss die Serialisierung eines Ereignisklassenmitglieds vermeiden, da die Serialisierung fehlschlägt, wenn das Ereignis von einem Objekt behandelt wird, das nicht als Serializable markiert ist.Wie ignoriert man Event-Klasse Mitglied für die binäre Serialisierung?
Ich habe versucht, das NonSerialized-Attribut für die Member der Event-Klasse, aber es kompiliert nicht. Diese Codezeile:
<NonSerialized()> Public Event PropertyValueChanged()
erzeugt den folgenden Fehler:
Attribute 'NonSerializedAttribute' cannot be applied to 'PropertyValueChanged' because the attribute is not valid on this declaration type.
Public Event PropertyValueChanged() ' compiles but needs the extra handling described below
Gibt es eine andere Art und Weise Serialisierung Ereignis Mitglieder zu vermeiden?
Dies ist kein Problem, wenn das Ereignis nicht behandelt wird und ich umgehen kann, indem Sie die Objekte klonen (und das Ereignis ignorieren), bevor Sie sie serialisieren. Ich frage mich nur, ob es einen besseren Weg gibt.
Danke.
@Paul - re "noch immer fehlgeschlagen"; was genau willst du machen? Ich frage mich, ob eine Änderung des Serialisierers hier eine gute Option wäre (es ist nicht so schwer wie es klingt und hat auch Seitenvorteile). Bis zu dir natürlich, aber ich kann über diesen Bereich für * Stunden sprechen * ... –
@Marc: Danke für die Nachverfolgung. Ich muss einfach Ereignisse beim Serialisieren einer Klasse ignorieren, da die Serialisierung fehlschlägt, wenn das Ereignis mit einem Objekt verbunden ist, das nicht serialisierbar ist. Das NonSerialized-Attribut ist zwar sinnvoll, scheint aber in VB nicht so zu funktionieren wie in C# ... Ich erhalte einen Compiler-Fehler, selbst wenn ich ein Hintergrundfeld an eine öffentliche Ereigniseigenschaft anordne. Was meinen Sie, wenn Sie "den Serializer ändern" sagen? Meinst du benutzerdefinierte Serialisierung oder eine andere 3rd-Party-Bibliothek? –