Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mensiri Kelas Terbitan dalam Senarai Generik menggunakan XmlSerializer?
Gunakan XmlSerializer untuk menyusun kelas terbitan
Apabila menggunakan XmlSerializer untuk mensiri objek yang mengandungi senarai generik kelas terbitan kelas abstrak, pengguna mungkin menghadapi pengecualian InvalidOperationException semasa proses penyahserikatan. Menyelesaikan masalah ini memerlukan teknik khusus untuk mengendalikan serialisasi objek terbitan.
Penyelesaian
Terdapat tiga kaedah yang berkesan:
[XmlInclude]
Atribut: Menggunakan atribut [XmlInclude]
sebelum pengisytiharan kelas abstrak, termasuk setiap jenis kelas terbitan. Ini memastikan bahawa penyeri bersiri tahu cara mengendalikan jenis terbitan khusus ini. XmlElement
/XmlArrayItem
Atribut: Gunakan atribut [XmlElement]
atau [XmlArrayItem]
pada atribut yang mengandungi senarai. Tentukan jenis kelas terbitan dalam sifat ini untuk mengarahkan penyiri mengecam dan menyahsiri objek. [XmlInclude]
pada kelas abstrak dan [XmlElement]
atau [XmlArrayItem]
pada sifat, sekali gus menyediakan pengendalian Jenis yang jelas dan tersirat. Coretan kod berikut memberikan contoh pelaksanaan terperinci menggunakan setiap kaedah:
<code class="language-csharp">// 1: [XmlInclude(typeof(ChildA))] // 1: [XmlInclude(typeof(ChildB))] public abstract class ChildClass { public string ChildProp { get; set; } } // 2: [XmlElement("A", Type = typeof(ChildA))] // 2: [XmlElement("B", Type = typeof(ChildB))] // 3: [XmlArrayItem("A", Type = typeof(ChildA))] // 3: [XmlArrayItem("B", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; } // ... 序列化和反序列化代码在此处 ...</code>
Pilih kaedah pilihan dan nyahkomen coretan kod yang sepadan untuk bersiri kelas terbitan.
Atas ialah kandungan terperinci Bagaimana untuk Mensiri Kelas Terbitan dalam Senarai Generik menggunakan XmlSerializer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!