none
Klasse mit einer ObservableCollection serialisieren und deserialisieren RRS feed

  • Frage

  • Hallo Leute,
    ich habe eine Klasse, die eine ObservableCollection enthält. Diese OC feuert mir immer ein CollectionChanged-Event so wie es sein soll.
    Aber wenn die Klasse serialisiert, dann gespeichert, und dann wieder deserialisiert wird, dann funktioniert zwar sonst alles aber das CollectionChanged-Event
    wird nach dem Deserialisieren nicht mehr gefeuert. Warum ist das so bzw. was muss ich machen, damit es funktioniert?

    Vielen Dank im Voraus
    Christian Tauschek

      <Serializable()> _
      Public Class TestKlasse
        Private WithEvents OC As New ObservableCollection(Of String)
    
        Public Sub NeuerEintrag(ByVal sText As String)
          OC.Add(sText)
        End Sub
    
        Private Sub OC_CollectionChanged(ByVal sender As Object, ByVal e As System.Collections.Specialized.NotifyCollectionChangedEventArgs) Handles OC.CollectionChanged
          'in diese Sub wird nach dem Deserialisieren nicht mehr gefeuert
        End Sub
      End Class
    

     

     


    Christian Tauschek
    Mittwoch, 6. April 2011 17:47

Antworten

  • Hallo Christian,

    die Ereignisse der ObservableCollection (CollectionChanged und PropertyChanged) sind ab .NET 3.5 SP1 nicht serialisierbar (NonSerializedAttribute) markiert.
    So wird zum einen verhindert, dass mehr als notwendig serialisiert wird und vermeidet Probleme, wenn nicht serialiserbare Ereignisse vorhanden sind.

    Es bedeutet in Deinem Falle, dass Du die Ereignis-Behandlungsroutinen nach dem Deserialisieren erneut einrichten musst.

    Gruß Elmar

    Mittwoch, 6. April 2011 18:22
    Beantworter