Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mensiri Kelas Terbitan dalam Senarai Generik dengan XmlSerializer?

Bagaimana untuk Mensiri Kelas Terbitan dalam Senarai Generik dengan XmlSerializer?

Mary-Kate Olsen
Lepaskan: 2025-01-11 09:27:43
asal
524 orang telah melayarinya

How to Serialize Derived Classes in Generic Lists with XmlSerializer?

Gunakan XmlSerializer untuk menyusun kelas terbitan

Apabila menggunakan XmlSerializer untuk bersiri XML, anda mungkin menghadapi cabaran semasa mengendalikan objek yang mengandungi senarai generik yang diperoleh daripada kelas abstrak. Percubaan untuk menyahsiri objek tersebut boleh mengakibatkan InvalidOperationException.

Untuk menyelesaikan isu ini, anda boleh menggunakan salah satu daripada tiga kaedah berikut:

1 Gunakan atribut [XmlInclude] pada jenis asas:

<code class="language-csharp">using System.Xml.Serialization;

[XmlInclude(typeof(ChildA))]
[XmlInclude(typeof(ChildB))]
public abstract class ChildClass
{
    public string ChildProp { get; set; }
}</code>
Salin selepas log masuk

2 Gunakan atribut [XmlElement] pada atribut:

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

3 Gunakan atribut [XmlArrayItem] pada atribut:

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

Nyahkomen pada pasangan atribut yang sepadan mengikut keperluan khusus anda. Dengan menggunakan salah satu kaedah ini, XmlSerializer akan dapat mengendalikan kelas terbitan semasa bersiri dan penyahsirilan.

Atas ialah kandungan terperinci Bagaimana untuk Mensiri Kelas Terbitan dalam Senarai Generik dengan 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