Maison >développement back-end >C++ >Comment implémenter au mieux l'interface IXMLSerializable dans C #?
Bonnes pratiques et directives pour l'interface IXmlSeriallessly en C#
Lors de la mise en œuvre de l'interface IXmlSerializable
, certaines directives et bonnes pratiques doivent être suivies pour garantir une sérialisation et une désérialisation appropriées des objets.
Méthode GetSchema()
La méthode de IXmlSerializable
devrait normalement renvoyer GetSchema()
. Selon la documentation officielle, cette méthode est réservée et ne doit pas être utilisée. Si vous devez spécifier un schéma personnalisé, appliquez plutôt null
à la classe. XmlSchemaProviderAttribute
Méthode ReadXml()
Méthode WriteXml()
WriteXml()
Gestion des sous-objets
Exemple
La mise en œuvre suivante est basée sur les directives ci-dessus :
<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 correspondant
<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>Ces bonnes pratiques garantissent que votre
implémentation est conforme aux attentes du framework et permet une sérialisation et une désérialisation fiables des données. IXmlSerializable
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!