Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara terbaik melaksanakan antara muka ixmlserializable di C#?
Amalan dan garis panduan terbaik untuk antara muka IXmlSerializable dalam C#
Apabila melaksanakan antara muka IXmlSerializable
, garis panduan dan amalan terbaik tertentu harus dipatuhi untuk memastikan pensirilan dan penyahsirilan objek yang betul.
Kaedah GetSchema()
Kaedah IXmlSerializable
biasanya akan mengembalikan GetSchema()
. Menurut dokumentasi rasmi, kaedah ini dikhaskan dan tidak boleh digunakan. Jika anda perlu menentukan skema tersuai, gunakan null
pada kelas sebaliknya. XmlSchemaProviderAttribute
Kaedah ReadXml()
Kaedah WriteXml()
WriteXml()
Mengendalikan sub-objek
Contoh
Pelaksanaan berikut adalah berdasarkan garis panduan di atas:
<code class="language-csharp">public class MyCalendar : IXmlSerializable { [XmlElement] public string Name { get; set; } [XmlElement] public bool Enabled { get; set; } [XmlElement] public Color Color { get; set; } public List<MyEvent> Events = new List<MyEvent>(); public XmlSchema GetSchema() => null; public void ReadXml(XmlReader reader) { reader.MoveToContent(); if (reader.LocalName != "MyCalendar") throw new XmlException("意外的元素名称。"); Name = reader.GetAttribute("Name"); Enabled = bool.Parse(reader.GetAttribute("Enabled")); Color = Color.FromArgb(int.Parse(reader.GetAttribute("Color"))); while (reader.ReadToFollowing("MyEvent")) { var evt = new MyEvent(); evt.ReadXml(reader); Events.Add(evt); } reader.ReadEndElement(); } public void WriteXml(XmlWriter writer) { writer.WriteAttributeString("Name", Name); writer.WriteAttributeString("Enabled", Enabled.ToString()); writer.WriteAttributeString("Color", Color.ToArgb().ToString()); foreach (var evt in Events) { writer.WriteStartElement("MyEvent"); evt.WriteXml(writer); writer.WriteEndElement(); } } }</code>
XML yang sepadan
<code class="language-xml"><mycalendar color="-14069085" enabled="True" name="Master Plan"><myevent start="start-value" stop="stop-value" title="Write Code"></myevent><myevent start="start-value" stop="stop-value" title="???"></myevent><myevent start="start-value" stop="stop-value" title="Profit!"></myevent></mycalendar></code>Amalan terbaik ini memastikan pelaksanaan
anda mematuhi jangkaan rangka kerja dan membolehkan pensirilan dan penyahsirilan data yang boleh dipercayai. IXmlSerializable
Atas ialah kandungan terperinci Bagaimana cara terbaik melaksanakan antara muka ixmlserializable di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!