Dieser Artikel erweitert eine frühere Diskussion zum Thema der Serialisierung von Klassen, die Wörterbuchmitglieder enthalten. Diese Klasse enthält drei Attribute: guiPath
, configPath
und mappedDrives
. mappedDrives
ist ein Wörterbuch, das Laufwerksbuchstaben Netzwerkpfaden zuordnet.
Beim Serialisieren oder Deserialisieren der Klasse erhält der Benutzer jedoch die folgende Fehlermeldung:
Mitglied App.Configfile.mappedDrives kann nicht serialisiert werden
Dieser Fehler tritt auf, weil generische Wörterbücher in .NET 2.0 aus irgendeinem Grund nicht XML-serialisierbar sind.
Lösung
Um dieses Problem zu lösen, können Benutzer eine benutzerdefinierte serialisierbare Wörterbuchklasse verwenden. Paul Welter bietet auf seinem Blog einen solchen Kurs an:
<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 { // 部分代码省略 ... }</code>
Diese Klasse implementiert die IXmlSerializable
-Schnittstelle und ermöglicht so deren Serialisierung und Deserialisierung. Benutzer können dann diese benutzerdefinierte Wörterbuchklasse in ihrer Hauptklasse verwenden:
<code class="language-csharp">// ... public Dictionary<string, string> mappedDrives = new SerializableDictionary<string, string>(); // ...</code>
Dies sollte eine korrekte Serialisierung und Deserialisierung der Klasse ermöglichen.
Das obige ist der detaillierte Inhalt vonWie serialisiere ich eine Klasse mit einem Wörterbuchmitglied in .NET 2.0?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!