Gunakan XmlSerializer untuk menyusun kelas terbitan
Pembangun mungkin menghadapi InvalidOperationException jika menggunakan XmlSerializer apabila cuba mensiri objek yang mengandungi kelas abstrak sebagai sebahagian daripada sifatnya. Mengatasi halangan ini memerlukan pengendalian kelas terbitan yang cekap semasa bersiri.
Penyelesaian
XmlSerializer menyediakan tiga kaedah untuk menyelesaikan masalah ini:
[XmlInclude]
Atribut: Digunakan pada kelas asas, ini menunjukkan bahawa serializer mengandungi kelas terbitan.
<code class="language-csharp"> [XmlInclude(typeof(ChildA))] [XmlInclude(typeof(ChildB))] public abstract class ChildClass { public string ChildProp { get; set; } }</code>
XmlElement
/XmlArrayItem
Atribut: Atribut ini hendaklah digunakan pada sifat yang membawa senarai, menyatakan jenis setiap elemen kelas terbitan.
<code class="language-csharp"> [XmlElement("A", Type = typeof(ChildA))] [XmlElement("B", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; }</code>
XmlArrayItem
Atribut: Diletakkan pada senarai itu sendiri, mereka mentakrifkan jenis elemen yang boleh terkandung dalam senarai.
<code class="language-csharp"> [XmlArrayItem("A", Type = typeof(ChildA))] [XmlArrayItem("B", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; }</code>
Dengan memilih salah satu daripada pilihan ini dan menyahkomen blok kod yang sepadan dalam sampel kod yang disediakan, pembangun boleh berjaya mensiri dan menyahsiri objek yang mengandungi kelas terbitan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Kelas Terbitan Menggunakan XmlSerializer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!