我有一个继承自List<T>
的类,并且还有一些属性,如下所示:
[Serializable]
public class DropList : List<DropItem>
{
[XmlAttribute]
public int FinalDropCount{get; set;}
}
这个类被序列化为xml,作为更大类的一部分:
[Serializable]
public class Location
{
public DropList DropList{get; set;}
....
}
问题是,序列化程序将我的列表视为集合;生成的XML只包含列表元素,但不包括类属性(在本例中为FinalDropCount)。这是输出XML的一个例子:
<Location xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DropList>
<DropItem ProtoId="3" Count="0" Minimum="0" Maximum="0" />
<DropItem ProtoId="4" Count="0" Minimum="0" Maximum="0" />
</DropList>
....
</Location>
是否有某种方法可以保存两个列表内容和属性而无需手动实施IXmlSerializable
?
答案 0 :(得分:2)
您可以考虑其他替代方案。
备选方案 - 转移到合成而不是继承:
public class DropInfo
{
[XmlArray("Drops")]
[XmlArrayItem("DropItem")]
public List<DropItem> Items { get; set; }
[XmlAttribute]
public int FinalDropCount { get; set; }
}
public class Location
{
public DropInfo DropInfo { get; set; }
}
备选方案二 - 移动集合外的属性:
public class DropList : List<DropItem>
{
}
public class Location
{
public DropList DropList { get; set; }
[XmlAttribute]
public int FinalDropCount { get; set; }
}