Serialisieren einer Klasse mit generischen Wörterbuchmitgliedern in C#
Beim Versuch, eine Profilklasse zu serialisieren, ist beim Versuch, das Wörterbuchmitglied zu serialisieren, ein Fehler aufgetreten. Trotz der Verwendung von Dictionary, HybridDictionary und Hashtable erhalte ich immer noch die folgende Fehlermeldung: „Mitglied App.Configfile.mappedDrives kann nicht serialisiert werden“.
Problemanalyse
Normalerweise sind Dictionary und Hashtable serialisierbar, aber einige Arten von Dictionary-Objekten sind möglicherweise nicht von Natur aus serialisierbar. In diesem Fall ergibt sich das Problem aus dem Versuch, ein Wörterbuch eines generischen Typs zu serialisieren.
Lösung
Paul Welters Blog bietet ein XML-serialisierbares generisches Wörterbuch, das die IXmlSerializable-Schnittstelle implementiert und so eine effiziente Serialisierung und Deserialisierung ermöglicht.
Implementierung der Lösung
Die Lösung kann mit dem folgenden Code-Snippet implementiert werden:
<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>
Zusammenfassend lässt sich sagen, dass Sie zum Serialisieren einer Klasse, die ein generisches Dictionary-Mitglied enthält, möglicherweise eine benutzerdefinierte XML-serialisierbare Dictionary-Klasse implementieren müssen, die die IXmlSerializable-Schnittstelle explizit unterstützt. Dies ermöglicht eine effiziente Serialisierung und Deserialisierung von Wörterbüchern.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Klasse, die ein generisches Wörterbuchmitglied enthält, in C# serialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!