Ich bin auf der Suche nach der Serialisierung eines Attributs anpassen. Ich dachte, es wäre einfach, aber ich konnte nicht erreichen, was ich wollte, wie ich es wollte.So erstellen Sie Ihre benutzerdefinierte XmlAttribute Serialisierung
So, hier ist ein einfaches Beispiel:
Klasse Definition:
Class MyClass
{
[XmlAttribute("myAttribute")]
public int[] MyProperty { get; set; }
}
Xml Ergebnis, dass ich möchte:
<MyClass myAttribute="1 2 3... N" />
Die einzige Arbeit, um tat ich das haben sollte Fügen Sie ein [XmlIgnore] -Attribut hinzu und erstellen Sie eine andere Eigenschaft mit Code, der die Umwandlung durchgeführt hat.
Also, meine Frage, gibt es einen besseren Weg als eine neue Eigenschaft zu erstellen? Vielleicht gibt es eine Art von TypeConverter, den Sie erstellen können, damit der Serializer sie verwenden kann?
Auch habe ich versucht, das Type-Attribut zu verwenden, aber ohne Erfolg. (Immer Ausnahmen erhalten). Aber von dem, was ich gelesen habe, ist es für bereits definierten Datentyp.
[XmlAttribute("myAttribute", typeof(MyConverter))]
public int[] MyProperty { get; set; }
Eine weitere interessante Art und Weise, wie das sein würde:
[XmlAttribute("myAttribute")]
[XmlConverter(typeof(MyConverter))]
public int[] MyProperty { get; set; }
Dank.
bearbeiten Da keine Lösung wie ich suchte vorgestellt wurde, entschied ich mich schließlich für die „IXmlSerializable“ Lösung zu entscheiden.
Ihre Leihmutter Eigentum ist genau das, was er zu vermeiden versucht. – SLaks
Sie müssen nur Leerzeichen (wie 4) am Anfang Ihrer Zeile hinzufügen. Stellen Sie außerdem sicher, dass es 2 Wagenrücklauf gibt. Für deine Antwort habe ich in meinem Beitrag gesagt, ich wollte deine zweite Möglichkeit vermeiden. Für den ersten wollte ich nicht auf diese Lösung zurückgreifen, aber vielleicht ist es die einzige Lösung. Ich denke, meine "Array-Klasse" ist nicht schlecht. – Sauleil
@SLaks: meine Anwendungen nennen diese Art von Feature "Bug" ;-) –