c# – serialise bool?错误反映类型

前端之家收集整理的这篇文章主要介绍了c# – serialise bool?错误反映类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个类
  1. [Serializable]
  2. public class MyClass
  3. {
  4. [XmlAttribute]
  5. public bool myBool { get; set; }
  6. }

但是,当xml中不存在属性时,将bool的值序列化为false.
属性不在xml中时,我希望属性为null.

所以我试过了

  1. [Serializable]
  2. public class MyClass
  3. {
  4. [XmlAttribute]
  5. public bool? myBool { get; set; }
  6. }

但是然后串行器错误

  1. Type t = Type.GetType("Assembly.NameSpace.MyClass");
  2. XmlSerializer mySerializer = new XmlSerializer(t); //error "There was an error reflecting type"

请给我一个例子,我可以做到这一点.我知道在SO上有一些相关的问题,但是没有什么可以显示如何用可空的bool来克服反射错误.谢谢.

解决方法

您需要使用“* Specified”字段模式来控制(参见 MSDN上的“控制生成的XML”):
  1. [Serializable]
  2. public class MyClass
  3. {
  4. [XmlAttribute]
  5. public bool myBool { get; set; }
  6.  
  7. [XmlIgnore]
  8. public bool myBoolSpecified;
  9. }

逻辑现在变成:

> If!myBoolSpecified,那么myBool在逻辑上是空的>否则使用myBool的true或false

猜你在找的C#相关文章