2009-06-03 14 views
1

Ich habe eine Klasse, die ich möchte, zu serialisieren/deserialisieren.
Es implementiert Schnittstelle IXMLConvertable:
Objekt zu/von XML serialisieren/deserialisieren - ist es eine gute Idee, Tags als Zeichenketten zu definieren?

public interface IXMLConvertable<T> 
where T: new() { 
    T deserialize(XElement element); 
    void serialize(XElement element); 
} 

wenn T eine Art von Objekt zu deserialisieren ist. Die Frage ist, ob es `s eine gute Praxis oder nicht XML-Tag-Namen nicht in Code angeben, aber in String-Konstanten, wie folgt aus:

public class XMLTagger { 
    Dictionary<String, String> xmltags; /*key is fieldname to serialize, value is the tag for it*/ 
    //... 
    public void addNewTag(String field, String tagForIt) { 
     xmltags.Add(field, tagForIt); 
    } 
    //... 
} 

Ich hoffe, Sie bekommen die Idee. Diese Klasse kann von jeder meiner Klasse verwendet werden, welche Objekte ich serialisieren/deserialisieren möchte und bietet eine einfache Möglichkeit, das gewünschte Tag mit dem Namen des Feldes zu erhalten. Ist das eine gute Idee oder nicht?

+0

(geantwortet zu kommentieren) –

Antwort

3

Kann ich fragen, warum Sie eine zusätzliche Schnittstelle einführen? IXmlSerializable scheint ziemlich ähnlich (wenn auch XmlWriter/XmlReader orientiert). Ich bin mir auch nicht sicher, warum deserialize würde zurückgeben etwas; sollten wir nicht das in das aktuelle Objekt deserialisieren? (Sonst ist es ein , wenn Sie sehen, was ich meine).

Re die Tags ... die Frage ist unklar; Sie zeigen keine Tag-Namen in entweder Code oder String-Konstanten ...

Aber es ist ein viel einfacher, nur XmlSerializer zu verwenden und lassen Sie es über alles Sorgen ...

[XmlType("foo")] 
public class Foo { 
    [XmlAttribute("bar")] 
    public string Bar {get;set;} 
    [XmlElement("baz")] 
    public int Baz {get;set;} 
} 
+0

Genau. Ich vermute, dass das OP die in den BCL eingebaute Funktionalität nicht kannte, also ist dies ein guter Rat. – Noldorin

+0

Was ist BCL übrigens? – chester89

+1

Basis-Klassenbibliothek - dh die Klassen, die im .NET-Framework geliefert werden –

Verwandte Themen