派生类中的 XML 序列化
本文关键字:XML 序列化 派生 | 更新日期: 2023-09-27 17:56:04
我希望在反序列化之前整理我用来保存xml数据的类。
我想得到的是这个
<CalculationInputs>
<Key Name="Keyname" Value="keyname" />
<Input Name="InputName" Value="InputValue" />
<Input Name="InputName2" Value="InputValue2" />
</CalculationInputs>
我目前的实现涉及拥有一个"ComputingInputs"类,其中包含"输入"列表和单个键类型,即
[XmlRoot("CalculationInputs")]
public class CalculationInputs
{
...
[XmlElement("Key")]
public Key Key { get; set; }
// InputList
[XmlElement("Input")]
public List<Input> InputList { get; set; }
...
}
但是我想通过像这样的列表计算输入类来简化它
[XmlRoot("CalculationInputs")]
public class CalculationInputs: List<Input>
{
[XmlElement("Key")]
public Key Key { get; set; }
...
}
可悲的是,它只有 50% 有效。扩展列表解脱了精细..但是"键"元素被忽略了,我得到了这个
<CalculationInputs>
<Input Name="InputName" Value="InputValue" />
<Input Name="InputName2" Value="InputValue2" />
</CalculationInputs>
有人有任何指示吗?
此外,对于额外的分数 - 反序列化时我可以有很多 Key 标签,它使用第一个并忽略其余的,即
<Key Name="Keyname" Value="keyname" />
<Key Name="Keyname2" Value="keyname2" />
而对我来说,如果在反序列化它时抛出异常会更好,因为 Key 不是列表。
谢谢。
c#
[XmlRoot("CalculationInputs")]
public class CalculationInputs
{
[XmlElement("Key")]
public Key Key { get; set; }
// InputList
[XmlArray("array")]
[XmlArrayItem("Input")]
public List<Input> Input { get; set; }
}
public class Key
{
[XmlAttribute("Name")]
public string Name { get; set; }
[XmlAttribute("Value")]
public string Value { get; set; }
}
public class Input
{
[XmlAttribute]
public string Name { get; set; }
[XmlAttribute]
public string Value { get; set; }
}
并像下面一样更改您的 Xml
<CalculationInputs>
<Key Name="Keyname" Value="keyname" />
<array>
<Input Name="InputName" Value="InputValue" />
<Input Name="InputName2" Value="InputValue2" />
</array>
</CalculationInputs>