none
XML Deserialize in ein bestehendes Object RRS feed

  • Frage

  • Ich speichere umfangreiche Settings per Serialization in ein XML-File. Das serialisierte Object enthält allerdings auch einige Felder, die von der Serialisation ausgeschlossen sind.

    Beim zurückladen (Deserialize) wird jedoch immer ein neues Objekt angelegt; wenn ich das auf meine bestehende Objekt-Variable lege, werden die nicht-serialisierten Felder mit den Klassen-Initialwerten überschrieben.

    Wie kann ich es erreichen, dass beim Deserialze mein bestehendes Objekt erhalten bleibt und nur die serialisierten Daten überschrieben werden?

    Gruß,

    Winfried

    Samstag, 17. November 2012 22:07

Antworten

  • Mit der Deserialize-Methode wird ein (neues) Objekt erzeugt. Das wird nichts überschrieben. Die nicht serialisierten Daten haben in dem neuen Objekt den Standardwert. Wenn Du zwei Objekte zusammenführen willst, dann kannst Du entweder per Code kopieren oder ein Objekt in das andere Objekt einbauen, z.B. als eingebettetes Objekt. Auf die Eigenschaften des eingebetteten Objekt kann man entweder zweistufig zugreifen oder die Werte “durchreichen” in entsprechende Eigenschaften des “äußeren” Objektes.
     
    --
    Viele Gruesse
    Peter
    • Als Antwort markiert WiWo Montag, 19. November 2012 13:12
    Sonntag, 18. November 2012 08:13

Alle Antworten

  • Mit der Deserialize-Methode wird ein (neues) Objekt erzeugt. Das wird nichts überschrieben. Die nicht serialisierten Daten haben in dem neuen Objekt den Standardwert. Wenn Du zwei Objekte zusammenführen willst, dann kannst Du entweder per Code kopieren oder ein Objekt in das andere Objekt einbauen, z.B. als eingebettetes Objekt. Auf die Eigenschaften des eingebetteten Objekt kann man entweder zweistufig zugreifen oder die Werte “durchreichen” in entsprechende Eigenschaften des “äußeren” Objektes.
     
    --
    Viele Gruesse
    Peter
    • Als Antwort markiert WiWo Montag, 19. November 2012 13:12
    Sonntag, 18. November 2012 08:13
  • Mit der Deserialize-Methode wird ein (neues) Objekt erzeugt. Das wird nichts überschrieben. Die nicht serialisierten Daten haben in dem neuen Objekt den Standardwert. Wenn Du zwei Objekte zusammenführen willst, dann kannst Du entweder per Code kopieren oder ein Objekt in das andere Objekt einbauen, z.B. als eingebettetes Objekt. Auf die Eigenschaften des eingebetteten Objekt kann man entweder zweistufig zugreifen oder die Werte “durchreichen” in entsprechende Eigenschaften des “äußeren” Objektes. Schau Dir mal ein typisiertes DataSet zur Anregung an.
     
    --
    Viele Gruesse
    Peter
    Sonntag, 18. November 2012 08:13
  • OK, hab ich mir eigentlich schon gedacht..

    ne andere Frage in dem Zusammenhang:

    Ich wollte auch eine HashTable in der serialisierten Klasse habe, musste allerdings feststellen, dass das mit dem XML-Serialisierer nicht geht (mit dem BinaryFormattter allerdings schon).

    Gibt's ne einfache Möglichkeit, Hashtables auch als XML zu serialisieren?

    Gruß,

    Winfried

    Sonntag, 18. November 2012 10:57
  • Hi,
    wandle die HashTable (wer braucht schon so etwas) in eine serialisierbare Auflistung um, z.B. List(of...) und nach dem Deserialisieren wieder zurück.
     
    --
    Viele Gruesse
    Peter
    Sonntag, 18. November 2012 15:52