序列化程序忽略属性:值

时间:2014-02-21 03:44:59

标签: c# serialization

C#序列化程序忽略了特定属性:。这个类里面有两个属性。 valueSpecified 被序列化。 没有。如果我在序列化期间设置了断点(>>>),则永远不会调用该行。如果我将属性名称更改为Value或valueX,则会发生序列化并调用断点。 我坚持使用该名称,因为该类是从我无法控制的模式生成的。这是序列化程序中的错误还是C#中的特殊字。我试着将它命名为@value,没有快乐。

[System.Xml.Serialization.XmlAttributeAttribute()]
public bool value {
    get {
>>>        return this.valueField;
    }
    set {
        this.valueField = value;
    }
}

/// <remarks/>
//[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool valueSpecified {
    get {
        return this.valueFieldSpecified;
    }
    set {
        this.valueFieldSpecified = value;
    }
}

2 个答案:

答案 0 :(得分:0)

使用'Value'作为属性名称,但将“value”传递给XmlAttributeAttribute的构造函数

答案 1 :(得分:0)

序列化程序首先查看valueSpecified以查看是否已明确设置value或是否将其视为默认值。

如果valueSpecified == true,序列化程序将获得value的值并将其序列化。 如果没有,序列化程序将假定该值是默认值,而不是显式序列化。

尝试将valueSpecified设置为true。