이 기사는 사전 멤버가 포함된 클래스 직렬화 문제에 대한 이전 논의를 확장합니다. 이 클래스에는 guiPath
, configPath
및 mappedDrives
의 세 가지 속성이 포함되어 있습니다. mappedDrives
은 드라이브 문자를 네트워크 경로에 매핑하는 사전입니다.
그러나 클래스를 직렬화하거나 역직렬화할 때 사용자에게 다음 오류가 표시됩니다.
구성원 App.Configfile.mappedDrives를 직렬화할 수 없습니다
이 오류는 어떤 이유로 .NET 2.0의 일반 사전이 XML 직렬화가 불가능하기 때문에 발생합니다.
솔루션
이 문제를 해결하기 위해 사용자는 사용자 정의 직렬화 가능 사전 클래스를 사용할 수 있습니다. Paul Welter는 자신의 블로그에서 이러한 수업을 제공합니다.
<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>
이 클래스는 IXmlSerializable
인터페이스를 구현하여 직렬화 및 역직렬화를 가능하게 합니다. 그런 다음 사용자는 기본 클래스에서 이 사용자 정의 사전 클래스를 사용할 수 있습니다.
<code class="language-csharp">// ... public Dictionary<string, string> mappedDrives = new SerializableDictionary<string, string>(); // ...</code>
이렇게 하면 클래스가 올바르게 직렬화 및 역직렬화될 수 있습니다.
위 내용은 .NET 2.0에서 사전 멤버를 사용하여 클래스를 직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!