在 .NET 中正確實作 IXmlSerializable 介面
正確實作 IXmlSerializable
介面需要遵循特定的規則和最佳實務。
GetSchema() 方法
GetSchema()
方法應回傳 null
。 IXmlSerializable
介面的文檔明確指出它應該為 null
,如果需要自訂架構,則應在類別上使用 XmlSchemaProviderAttribute
屬性。
ReadXml() 方法
在回傳之前,將讀取器推進到下一個元素。這是因為框架會自動處理包裝元素,而實作者有責任處理結束元素標記。
WriteXml() 方法
避免為物件寫入根元素。框架會將寫入器定位到包裝元素的開頭,由實作者寫入其內容。
子物件
將子物件視為父物件的常規成員。應在父物件的 WriteXml
和 ReadXml
方法中讀取/寫入它們。
範例實作
<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>
透過遵循這些準則,您可以確保在 .NET 中為您的物件實現正確且一致的 IXmlSerializable
介面。
以上是如何在.NET中正確實現IXMLSerializizable?的詳細內容。更多資訊請關注PHP中文網其他相關文章!