Announcement

Collapse
No announcement yet.

Sich selber de-serializieren ?? (XML)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sich selber de-serializieren ?? (XML)

    Hallo Spezialisten

    In den mit bekannten Beispielen (MSDN) wird mit dem <pre>System.Xml.Serialization.XmlSerializer</pre> immer eine "Fremdklasse" serialisiert. Das heisst, es wird eine Klasse instanziert und diese wird dann dem Serializer übergeben.

    Aber das muss doch irgendwie möglich sein, dass sich eine Klasse zur Laufzeit selber serializiert, in dem ich ihr Methoden "Save" und "Load" gebe...

    Ich dachte ich könnte das mit dem <pre>this</pre>-Keyword machen, hat er aber nicht akzeptiert ? ("this is read-only")

    <pre>
    // Konfigurationsdaten aus dem XML-File lesen
    System.Xml.Serialization.XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(typeof(CSet tings));
    System.IO.FileStream fs = new System.IO.FileStream("vcSettings.xml", System.IO.FileMode.Open);
    <b>this</b> = (CSettings) xml.Deserialize(fs);
    </pre>

    Wie macht man's richtig ?

  • #2
    Gar nicht! Eine Klasse bzw. ein Objekt kann sich nicht selbst deserializieren. Zum einen erzeugt die Deserialize-Methode immer eine neue Instanz der Klasse und zum anderen ist das Objekt hinter der Referenz in der (schreibgeschützten) Variablen this bereits instantiiert.

    Ein Vorschlag: Der Klasse zwei Methoden Read und Save spendieren, die jeweils ein XmlReader bzw. XmlWriter-Objekt akzeptieren und in der Klasse die (De-)Serialisierung von Hand durchführen.

    Gruß, Martin
    www.aboutxml.d
    Martin Szugat
    www.aboutxml.de

    Comment


    • #3
      Da kriegt man ja Würmer...ich glaub ich zieh doch die Registry vor

      Comment


      • #4
        Was ist mit class functions? Diese könnten dann eine neue Instanz der aktuellen Klasse zurückgeben.<p>
        Mari
        Schöne Grüße, Mario

        Comment

        Working...
        X