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

前端之家收集整理的这篇文章主要介绍了c# – serialise bool?错误反映类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个类
[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

猜你在找的C#相关文章