Implementieren Sie die IXmlSerializable-Schnittstelle korrekt in .NET
Für die ordnungsgemäße Implementierung der IXmlSerializable
-Schnittstelle müssen bestimmte Regeln und Best Practices befolgt werden.
GetSchema()-Methode
GetSchema()
Methoden sollten null
zurückgeben. In der Dokumentation für die Schnittstelle IXmlSerializable
heißt es eindeutig, dass sie null
sein sollte. Wenn Sie ein benutzerdefiniertes Schema benötigen, sollten Sie das Attribut XmlSchemaProviderAttribute
für die Klasse verwenden.
ReadXml()-Methode
Führen Sie den Leser zum nächsten Element, bevor Sie zurückkehren. Dies liegt daran, dass das Framework automatisch umschließende Elemente verarbeitet, die Verarbeitung des schließenden Element-Tags jedoch in der Verantwortung des Implementierers liegt.
WriteXml()-Methode
Vermeiden Sie das Schreiben des Stammelements für Objekte. Das Framework positioniert den Writer am Anfang des umschlossenen Elements und der Implementierer schreibt seinen Inhalt.
Unterobjekt
Behandeln Sie untergeordnete Objekte als reguläre Mitglieder des übergeordneten Objekts. Sie sollten in den Methoden WriteXml
und ReadXml
des übergeordneten Objekts gelesen/geschrieben werden.
Beispielimplementierung
<code class="language-csharp">public class MyCalendar : IXmlSerializable { // ... public void ReadXml(XmlReader reader) { reader.MoveToElement(); _name = reader.GetAttribute("Name"); // ... reader.ReadToDescendant("MyEvent"); while (reader.NodeType != XmlNodeType.EndElement) { MyEvent evt = new MyEvent(); evt.ReadXml(reader); _events.Add(evt); reader.MoveToContent(); } reader.ReadEndElement(); } public void WriteXml(XmlWriter writer) { writer.WriteAttributeString("Name", _name); // ... foreach (MyEvent evt in _events) evt.WriteXml(writer); } }</code>
Durch Befolgen dieser Richtlinien können Sie sicherstellen, dass Sie korrekte und konsistente IXmlSerializable
Schnittstellen für Ihre Objekte in .NET implementieren.
Das obige ist der detaillierte Inhalt vonWie implementiert man IXmlSerializable in .NET richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!