Gunakan XmlSerializer untuk menyusun kelas terbitan
Mensiri objek yang mengandungi senarai generik kelas asas abstrak boleh memberikan cabaran apabila menggunakan XmlSerializer. Artikel ini meneroka cara menyelesaikan masalah ini.
Soalan:
Objek yang mengandungi senarai kelas terbitan (Senarai
Penyelesaian:
Untuk berjaya mensirikan objek terbitan, tiga kaedah boleh digunakan:
Contoh kod:
Kod berikut menunjukkan tiga kaedah:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Xml.Serialization; // 方法一:使用 [XmlInclude] [XmlInclude(typeof(ChildA))] [XmlInclude(typeof(ChildB))] public abstract class ChildClass { public string ChildProp { get; set; } } // 方法二:使用 XmlElement public class MyWrapper { [XmlElement("ChildA", Type = typeof(ChildA))] [XmlElement("ChildB", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; } } // 方法三:使用 XmlArrayItem public class MyWrapper2 { [XmlArrayItem("ChildA", Type = typeof(ChildA))] [XmlArrayItem("ChildB", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; } } public class ChildA : ChildClass { public string AProp { get; set; } } public class ChildB : ChildClass { public string BProp { get; set; } }</code>
Dengan membatalkan ulasan pasangan atribut yang diperlukan, anda boleh memilih penyelesaian yang paling sesuai dengan keperluan anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Senarai Jenis Terbitan Kelas Asas Abstrak Menggunakan XmlSerializer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!