Klassendesign (Eigenschaften/ Verarbeitung)

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Dasive.

    Klassendesign (Eigenschaften/ Verarbeitung)

    Ich habe in einer Klassenbibliothek eine Klasse mit den Eigenschaften "Name" und "Inhalt".

    Diese Informationen können in ein XML-Dokument gespeichert werden usw.

    Meine Frage dazu: Wo gehören die Methoden hin, die mit der Verarbeitung des XMLs (XDocument) zu tun haben?
    In einen "Controller", direkt in die Klasse, in ne Partial Class die nur diese Methoden enthält.. ?

    Dasive schrieb:

    Die Methoden dazu hab ich auch schon, es geht nur um den "korrekten" Platz an dem die sein sollten.

    Versteh ich noch weniger: wenn ich die Klasse in ein File serialisiere (XMLSerializer) dann bekomme ich sie per Deserialize auch wieder zurück. Wozu braucht man dann noch ein XDocument ? ?(
    Da gibts glaub 2 Konzepte: Serialisierung und Befüllung.

    Serialisierung ist "von aussen", da gibts einen Serializer, der kann anhand eines Objekts eine Datei erstellen, und anhand einer Datei ein Objekt erstellen. Insbesondere die Deserialisierung geht nicht "von innen", denn ein Objekt kann sich nicht selbst erstellen, eben weils ja noch garnet da ist.

    Befüllung geht "von innnen": Mit Sub New erzeugt man ein Objekt im Rohzustand, und das kann sich dann aus einer Datei befüllen. Und ebensogut kann es seinen Inhalt auch in eine Datei schreiben.
    Dataset macht das so, mit Dataset.ReadXml und Dataset.WriteXml.

    Ich weiß allerdings nicht, wasses da groß Code geben muß, der mit Xml handelt. Jedenfalls für Befüllung ist die Antwort klar, für Serialisierung binnich unschlüssig.
    Vlt. macht man eine ObjektMethode "WriteToFile()" und eine Public Shared ErzeugerMethode "FromFile()" oder sowas.
    @Kangaroo:
    Das schreiben der Klasse wird anders realisiert als "nur" durch eine Serialisierung.

    Ich habe eigene Methoden dafür, die das machen wie benötigt.
    Aber ob und wie da ein xDocument o.ä. mitspielt ist doch momentan irrelevant.

    Meine Frage ist nur, wo diese Methoden zum benutzerdefinierten verarbeiten/ schreiben hingehören.

    @ErfinderDesRades
    Danke, damit kann ich was anfangen.
    Ich beschäftige mich momentan noch nur mit dem Schreiben, um das Deserialisieren kümmere ich mich später.

    Dasive schrieb:

    Meine Frage ist nur, wo diese Methoden zum benutzerdefinierten verarbeiten/ schreiben hingehören.

    Wenn Du eine Antwort zum Klassendesign erwartest, ohne mehr über die Klasse anzugeben als dass sie 2 Properties besitzt, - was erwartest Du dann eigentlich ?

    @EDR hmm, Befüllung vs Serialiserung, woher hast Du die Konzepte ?

    Serialiserung ist zunächst einmal nur die Umwandlung eines Objekts in einen Bytestream, wobei Strings und Files wohl noch ein sehr kleiner und zumeist nicht mal wichtiger Anwendungsbereich darstellen.

    Serialisierung macht von 'innen' meist den meisten Sinn.

    Deserialisierung von 'innen' (wenn das Objekt schon da ist) nur wenn es sich um soetwas wie Enumerables handelt, dann geht das natürlich auch. Ansonsten kann sie zwar nicht innerhalb eines Objekts aber innerhalb der Klasse angesiedelt werden, per Shared CreateObject oder Factory.

    Dasive schrieb:

    Das schreiben der Klasse wird anders realisiert als "nur" durch eine Serialisierung.

    Warum eigentlich?

    Serialisierung mit einem Serializer ist doch sehr bequem. Und wenn man ISerializable selbst implementiert ist das auch sehr mächtig - wenn du da mit deine selbsterfundenen Methoden man nicht das Rad neu erfindest.
    Weil eine reine Serialisierung den gewünschten Zweck nicht erfüllen würde.
    Es geht primär nicht darum die Klasse so abzuspeichern, dass sie deserialisiert werden kann, sondern nur die wichtigen Informationen für Menschen leserlich, wie vorgegeben formatiert geschrieben werden.