Die Serialisierung einer Klasse mit events

Habe ich eine Klasse wie folgt aus:

public delegate void ChangedEventHandler(object sender, EventArgs e);
[Serializable]
public class valueDouble
{
    public event ChangedEventHandler Changed;
    public double value
    {
        get { return _value; }
        set 
        {
            _value = value;
            if (Changed != null)
            {
                Changed(this, EventArgs.Empty);
            }
        }
    }
    private double _value = 0;
}

Ich habe auch eine andere Klasse (StepPulseblaster), die nicht serialisierbar und fügt einen Ereignis-Handler

valDouble.Changed += new ChangedEventHandler(sc_PropertyChanged);

Wenn ich versuche zu serialisieren der valueDouble Klasse, gibt es einen Fehler:

The Type StepPulseblaster is not marked as serializable

Wenn ich kommentieren Sie die Zeile

valDouble.Changed += ...

wird es keine Fehler mehr.

Wie kann ich die Serialisierung einer Klasse, die einige Ereignisse verbunden?

  • Wollen Sie die Ereignisse immer noch da sein, wenn Sie deserialisiert werden, oder wollen Sie serialisieren Sie die Daten ohne die Ereignisse?
  • Ich benutze das Event zum aktualisieren einer GUI, deshalb Brauch ich das Ereignis nach dem Deserialisieren ich es. Ich habe über 1000 Duplikate dieser Klasse, so dass ich nicht wirklich wollen, um das Ereignis zu löschen, bevor die Serialisierung und erstellen Sie es erneut.
  • Okay, nächste Frage: warum sind Sie mit der Serialisierung das Objekt? Speichern Sie es irgendwo und laden Sie es später, oder sind Sie zugänglich zu machen, um einem anderen Kontext (z.B. einer anderen AppDomain oder einem anderen Prozess)? Sie werden nicht in der Lage zu serialisieren Sie den Verweis auf die GUI, aber je nachdem, was Sie benötigen, kann es leicht sein, Wege zu erreichen, was Sie wollen.
  • Ich möchte auf der Festplatte speichern und in der Lage sein, um Sie später wiederherstellen.
Schreibe einen Kommentar