加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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.
当属性不在xml中时,我希望属性为null.

所以我试过了

[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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读