XML序列化和空值 - C#

21

我有一个对象,我将其序列化为XML。如果对象中的某个属性为null,则原生序列化会忽略添加此属性作为XML元素。这是否是正常行为?如果是,是否有办法覆盖它?

例:

public class Test
{
  [XmlAttribute]
  public string value {set; get; }

  [XmlAttribute]
  public string key {set; get; }
}

当值为null时,我得到

<Root>
  <Test key="blah">
</Root>
3个回答

34

我喜欢这个,它可以应用于单个元素。是否有办法指定对于一个具有大量字段的给定类(比如说1,000个),这是所有字段的默认值,而不必触及每个字段? - froggythefrog
顺便说一句,我并不是在一个类中有很多字段。实际上,我有很多用于WCF服务的类,并希望通过序列化它们来创建REST消息。我希望服务包括所有字段,无论其值或缺失如何。 - froggythefrog
1
这是一个框架关注点(你的服务==框架 :))。也就是说,如果你希望所有的服务都以相同的方式运行,请不要更改数据类。改变使用的序列化程序即可。你可以钩入WCF,并用自定义序列化程序替换默认序列化程序。 - Sunny Milenov
那听起来就是我需要做的事情。 - froggythefrog

2
如果Sunny的回答不适合您,您可以通过实现IXmlSerializable接口来自定义序列化过程。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接