Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Berjaya Mensiri dan Menyahseri Senarai Generik Kelas Terbitan Menggunakan XmlSerializer?

Bagaimanakah Saya Boleh Berjaya Mensiri dan Menyahseri Senarai Generik Kelas Terbitan Menggunakan XmlSerializer?

Barbara Streisand
Lepaskan: 2025-01-11 10:35:46
asal
432 orang telah melayarinya

How Can I Successfully Serialize and Deserialize Generic Lists of Derived Classes Using XmlSerializer?

Mensiri dan Menyahseri Senarai Generik Kelas Terbitan dengan XmlSerializer

XmlSerializer memberikan cabaran apabila mensiri objek yang mengandungi senarai generik kelas terbitan. Sifat kelas asas abstrak bagi unsur terbitan ini sering menghasilkan InvalidOperationException semasa penyahserikatan. Mari kita terokai penyelesaian kepada masalah biasa ini.

Menangani Isu Serialisasi/Deserialisasi

Tiga strategi berkesan wujud untuk mengatasi had ini:

1. Menggunakan [XmlInclude] Atribut

<code class="language-csharp">//1: [XmlInclude(typeof(ChildA))]
//1: [XmlInclude(typeof(ChildB))]
public abstract class ChildClass { /* ... */ }</code>
Salin selepas log masuk

Kaedah ini memerlukan penjelasan kelas asas (ChildClass) dengan atribut [XmlInclude] untuk setiap dan setiap kelas terbitan.

2. Menggaji [XmlElement] atau [XmlArrayItem] pada Hartanah

<code class="language-csharp">    //2: [XmlElement("A", Type = typeof(ChildA))]
    //2: [XmlElement("B", Type = typeof(ChildB))]
    public List<ChildClass> Data { get; set; }</code>
Salin selepas log masuk

Di sini, atribut [XmlElement] atau [XmlArrayItem] digunakan terus pada sifat yang mengandungi senarai kelas terbitan. Ini memberikan maklumat jenis eksplisit kepada penyeri bersiri.

3. Memanfaatkan [XmlArrayItem] pada Harta

<code class="language-csharp">    //3: [XmlArrayItem("A", Type = typeof(ChildA))]
    //3: [XmlArrayItem("B", Type = typeof(ChildB))]
    public List<ChildClass> Data { get; set; }</code>
Salin selepas log masuk

Pendekatan ini mencerminkan kaedah 2 tetapi menggunakan [XmlArrayItem] bukannya [XmlElement], menawarkan struktur XML yang sedikit berbeza.

Memilih Pendekatan yang Betul

Setiap pendekatan ini membolehkan pensirilan dan penyahsirilan objek berjaya dengan senarai kelas terbitan. Pilihan optimum bergantung pada keperluan khusus aplikasi anda untuk struktur dan fleksibiliti XML.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Berjaya Mensiri dan Menyahseri Senarai Generik Kelas Terbitan Menggunakan XmlSerializer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan