指定的模式被调用但没有效果 - 不工作(XmlSerializer)

Specified Pattern is called but has no effect - not working (XmlSerializer)

我知道这个话题是重复的。这不是我第一次处理 XmlSerializer,我没有遇到这个问题。但是这一次,我不知道发生了什么。

public string comp_addr01
{
    get
    {
        return this.comp_addr01Field;
    }
    set
    {
        this.comp_addr01Field = value;
    }
}

[XmlIgnore]
public bool comp_addr01Specified { get { return true; } }

我测试过 comp_add01Specified 正在被调用,但未显示在 xml 输出中。

到目前为止唯一的方法是在添加时起作用 XmlElement(IsNullable = true)

[XmlElement(IsNullable = true)]
public string comp_addr01
{
    get
    {
        return this.comp_addr01Field;
    }
    set
    {
        this.comp_addr01Field = value;
    }
}

但现在 <comp_addr01 xsi:nil="true" /> xsi:nil="true" 显示了,但我不需要它显示。我不知道发生了什么乱七八糟的事情

如果 IsNullable 为假(或省略),则 comp_addr01 的空值将导致没有元素被添加到 属性 的 xml。在这种情况下,您不能指望序列化程序写出一个空标记,因为无法知道它稍后反序列化该空标记是否应该导致 null - 它可能只是您的对象的一个​​实例,没有已定义子属性。

如果 IsNullable 为真,那么当 属性 为 null 时,您将告诉序列化器创建一个带有 xsi:nil="true" 的元素 - xsi:nil 位告诉这个元素实际上是空的反序列化器。

XmlElementAttribute.IsNullable

"Gets or sets a value that indicates whether the XmlSerializer must serialize a member that is set to null as an empty tag with the xsi:nil attribute set to true."