簡體   English   中英

繼承基類的XMLType

[英]Inherit XMLType of base class

我有以下基類使用XmlType屬性修飾

[Serializable]
[XmlType("Base")]
public class Base
{
    [XmlElement(ElementName = "IdBase")]
    public int IdBase { get; set; }
    ...
}

以下是Inherited類, 沒有 XMLType attibute裝飾類

[Serializable]
public class InheritedClass1 : Base
{
    [XmlElement(ElementName = "InheritedProp")]
    public int InheritedProp{ get; set; }
    ...
}

當我序列化時,繼承的類似乎覆蓋生成以下XML的XmlType(我沒想到,因為我沒有使用XmlType顯式修飾)

<InheirtedClass1>
    <IdBase>1</IdBase>
    <InheritedProp>1</InheritedProp>
    ...
</InheirtedClass1>

這就是我所期望的XML

<Base>
    <IdBase>1</IdBase>
    <InheritedProp>1</InheritedProp>
    ...
</Base>

如果我嘗試使用[XmlType(“Base”)]屬性裝飾繼承的類,但是當我創建XmlSerializer的實例(typeof(InheirtedClass1))時會拋出異常,因為它復制了XmlType,這是有道理的......

有人可以解釋為什么會發生這種情況(XmlType被替換而沒有明確強制它)以及如何實現所需的行為?

我實現了所需的行為,只需使用XmlInclude屬性修飾基類,然后使用基類類型的XmlSerializer

[Serializable]
[XmlType("Base")]
[XmlInclude(typeof(InheritedClass1))] //Missing This line! 
public class Base
{
     [XmlElement(ElementName = "IdBase")]
     public int IdBase { get; set; }
     ...
}

這個答案基於Marc Gravell對以下問題的回答(在我第一次搜索時,我無法找到這個與我的基本相同的問題)

https://stackoverflow.com/a/12237360/2237027

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM