Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mensiri Kelas yang Mengandungi Ahli Kamus Generik dalam C#?

Bagaimanakah Saya Boleh Mensiri Kelas yang Mengandungi Ahli Kamus Generik dalam C#?

Barbara Streisand
Lepaskan: 2025-01-15 18:36:43
asal
407 orang telah melayarinya

How Can I Serialize a Class Containing a Generic Dictionary Member in C#?

Mensiri kelas yang mengandungi ahli kamus generik dalam C#

Semasa cuba mensiri kelas profil, ralat telah ditemui semasa cuba mensiri ahli Kamus. Walaupun menggunakan Dictionary, HybridDictionary dan Hashtable, saya masih mendapat ralat berikut: "Tidak dapat menyerikan ahli App.Configfile.mappedDrives".

Analisis Masalah

Biasanya, Kamus dan Hashtable boleh bersiri, tetapi sesetengah jenis objek Kamus mungkin tidak boleh bersiri secara semula jadi. Dalam kes ini, masalahnya berpunca daripada cubaan untuk mensiri Kamus jenis generik.

Penyelesaian

Blog Paul Welter menyediakan kamus generik boleh bersiri XML yang melaksanakan antara muka IXmlSerializable, membolehkan pensirilan dan penyahsirilan yang cekap.

Pelaksanaan penyelesaian

Penyelesaian boleh dilaksanakan menggunakan coretan kod berikut:

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

[XmlRoot("dictionary")]
public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable
{
    // ... 省略 SerializableDictionary 类的实现细节 ...
}</code>
Salin selepas log masuk

Ringkasnya, untuk menyerikan kelas yang mengandungi ahli Kamus generik, anda mungkin perlu melaksanakan kelas kamus boleh bersiri XML tersuai yang menyokong antara muka IXmlSerializable secara eksplisit. Ini akan membolehkan penyiaran yang cekap dan penyahserikatan kamus.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Kelas yang Mengandungi Ahli Kamus Generik dalam C#?. 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