XmlSerializer を使用して派生クラスをシリアル化します
XmlSerializer を使用する場合、抽象基本クラスのジェネリック リストを含むオブジェクトをシリアル化すると、問題が発生する可能性があります。この記事では、この問題を解決する方法について説明します。
質問:
派生クラスのリスト (List
解決策:
派生オブジェクトを正常にシリアル化するには、次の 3 つのメソッドを使用できます。
コード例:
次のコードは 3 つのメソッドを示しています。
<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 中国語 Web サイトの他の関連記事を参照してください。