Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mensiri Kelas Terbitan Menggunakan XmlSerializer?

Bagaimanakah Saya Boleh Mensiri Kelas Terbitan Menggunakan XmlSerializer?

DDD
Lepaskan: 2025-01-11 09:53:43
asal
133 orang telah melayarinya

How Can I Serialize Derived Classes Using XmlSerializer?

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:

  1. [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>
    Salin selepas log masuk
  2. 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>
    Salin selepas log masuk
  3. 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>
    Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan