XmlSerializer를 사용하여 파생 클래스 직렬화
추상 기본 클래스 일반 목록이 포함된 개체를 직렬화하면 XmlSerializer를 사용할 때 문제가 발생할 수 있습니다. 이 문서에서는 이 문제를 해결하는 방법을 살펴봅니다.
질문:
파생 클래스 목록(List
해결책:
파생 객체를 성공적으로 직렬화하려면 다음 세 가지 방법을 사용할 수 있습니다.
코드 예:
다음 코드는 세 가지 방법을 보여줍니다.
<code class="language-csharp">using System; using System.Collections.Generic; using System.Xml.Serialization; // 方法一:使用 [XmlInclude] [XmlInclude(typeof(ChildA))] [XmlInclude(typeof(ChildB))] public abstract class ChildClass { public string ChildProp { get; set; } } // 方法二:使用 XmlElement public class MyWrapper { [XmlElement("ChildA", Type = typeof(ChildA))] [XmlElement("ChildB", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; } } // 方法三:使用 XmlArrayItem public class MyWrapper2 { [XmlArrayItem("ChildA", Type = typeof(ChildA))] [XmlArrayItem("ChildB", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; } } public class ChildA : ChildClass { public string AProp { get; set; } } public class ChildB : ChildClass { public string BProp { get; set; } }</code>
필수 속성 쌍의 주석 처리를 제거하면 요구 사항에 가장 적합한 솔루션을 선택할 수 있습니다.
위 내용은 XmlSerializer를 사용하여 추상 기본 클래스의 파생 유형 목록을 어떻게 직렬화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!