c# – serialise bool?错误反映类型
发布时间:2020-12-15 06:29:01 所属栏目:百科 来源:网络整理
导读:我有一个类 [Serializable] public class MyClass { [XmlAttribute] public bool myBool { get; set; } } 但是,当xml中不存在属性时,将bool的值序列化为false. 当属性不在xml中时,我希望属性为null. 所以我试过了 [Serializable]public class MyClass{ [XmlA
我有一个类
[Serializable] public class MyClass { [XmlAttribute] public bool myBool { get; set; } } 但是,当xml中不存在属性时,将bool的值序列化为false. 所以我试过了 [Serializable] public class MyClass { [XmlAttribute] public bool? myBool { get; set; } } 但是然后串行器错误 Type t = Type.GetType("Assembly.NameSpace.MyClass"); XmlSerializer mySerializer = new XmlSerializer(t); //error "There was an error reflecting type" 请给我一个例子,我可以做到这一点.我知道在SO上有一些相关的问题,但是没有什么可以显示如何用可空的bool来克服反射错误.谢谢. 解决方法
您需要使用“* Specified”字段模式来控制(参见
MSDN上的“控制生成的XML”):
[Serializable] public class MyClass { [XmlAttribute] public bool myBool { get; set; } [XmlIgnore] public bool myBoolSpecified; } 逻辑现在变成: > If!myBoolSpecified,那么myBool在逻辑上是空的>否则使用myBool的true或false (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |