XmlSerializer를 XML 직렬화에 사용하는 경우 추상 클래스에서 파생된 일반 목록이 포함된 개체를 처리할 때 문제가 발생할 수 있습니다. 이러한 개체를 역직렬화하려고 하면 InvalidOperationException이 발생할 수 있습니다.
이 문제를 해결하려면 다음 세 가지 방법 중 하나를 사용할 수 있습니다.
1. 기본 유형에 [XmlInclude] 속성을 사용합니다.
<code class="language-csharp">using System.Xml.Serialization; [XmlInclude(typeof(ChildA))] [XmlInclude(typeof(ChildB))] public abstract class ChildClass { public string ChildProp { get; set; } }</code>
2. 속성에 [XmlElement] 속성을 사용합니다.
<code class="language-csharp">public class MyWrapper { [XmlElement("A", Type = typeof(ChildA))] [XmlElement("B", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; } }</code>
3. 속성에 [XmlArrayItem] 속성을 사용합니다.
<code class="language-csharp">public class MyWrapper { [XmlArrayItem("A", Type = typeof(ChildA))] [XmlArrayItem("B", Type = typeof(ChildB))] public List<ChildClass> Data { get; set; } }</code>
특정 요구 사항에 따라 해당 속성 쌍의 주석 처리를 해제하세요. 이러한 메서드 중 하나를 사용하면 XmlSerializer는 직렬화 및 역직렬화 중에 파생 클래스를 처리할 수 있습니다.
위 내용은 XmlSerializer를 사용하여 일반 목록의 파생 클래스를 직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!