我使用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排序我的问题,但我只是好奇我是否应该做更多而不仅仅是让这个可以为空的
感谢。
答案 0 :(得分:0)
您的属性应该可以为空。 XML明确告诉您该属性可以是true
,false
或null
; 3是有效值,您的班级应该支持所有3。
除了将您的财产设为bool?
之外,您无需执行任何操作;如果属性为XmlSerializer
,则i:nil="true"
将正确处理读取/写入null
。
请确保您的代码旨在考虑适用的null
值,以免您获得例外。