>백엔드 개발 >C++ >C#에서 일반 사전 멤버가 포함된 클래스를 직렬화하려면 어떻게 해야 합니까?

C#에서 일반 사전 멤버가 포함된 클래스를 직렬화하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-15 18:36:43408검색

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

C#에서 일반 사전 멤버가 포함된 클래스 직렬화

프로필 클래스를 직렬화하는 동안 사전 구성원을 직렬화하는 동안 오류가 발생했습니다. Dictionary, HybridDictionary 및 Hashtable을 사용해도 "멤버 App.Configfile.mappedDrives를 직렬화할 수 없습니다"라는 오류가 계속 발생합니다.

문제 분석

일반적으로 Dictionary 및 Hashtable은 직렬화 가능하지만 일부 유형의 Dictionary 개체는 본질적으로 직렬화 가능하지 않을 수 있습니다. 이 경우 문제는 일반 유형의 사전을 직렬화하려고 시도하는 데서 발생합니다.

솔루션

Paul Welter의 블로그에서는 효율적인 직렬화 및 역직렬화를 가능하게 하는 IXmlSerialized 인터페이스를 구현하는 XML 직렬화 가능 일반 사전을 제공합니다.

솔루션 구현

다음 코드 조각을 사용하여 솔루션을 구현할 수 있습니다.

<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>

요약하자면, 일반 Dictionary 멤버가 포함된 클래스를 직렬화하려면 IXmlSerialized 인터페이스를 명시적으로 지원하는 사용자 정의 XML 직렬화 가능 사전 클래스를 구현해야 할 수도 있습니다. 이를 통해 사전의 효율적인 직렬화 및 역직렬화가 가능해집니다.

위 내용은 C#에서 일반 사전 멤버가 포함된 클래스를 직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.