使用nullable属性反序列化布尔值?

时间:2013-08-26 12:55:32

标签: c# rest xml-serialization xml-deserialization

我使用C#将字符串反序列化回对象。 xml字符串看起来像

"<Authentication xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">
  <Status>Success</Status>
  <Available i:nil=\"true\"/>
</Authentication>"

虽然我设法通过使bool属性可以为空来处理Available,但我只是想知道处理i的正确方法是什么:nil = \“true \”?

我是否应该做其他事情而不仅仅是使属性可用属性可以为空?

请注意,如果没有使bool属性可以为空,它会抛出一个错误,即字符串“”无法转换为bool,因此使nullable排序我的问题,但我只是好奇我是否应该做更多而不仅仅是让这个可以为空的

感谢。

1 个答案:

答案 0 :(得分:0)

您的属性应该可以为空。 XML明确告诉您该属性可以是truefalsenull; 3是有效值,您的班级应该支持所有3。

除了将您的财产设为bool?之外,您无需执行任何操作;如果属性为XmlSerializer,则i:nil="true"将正确处理读取/写入null

请确保您的代码旨在考虑适用的null值,以免您获得例外。