使用xmlserializer时删除默认值

时间:2014-09-17 10:09:04

标签: c#-4.0

我必须使用C#中的默认值删除datamember。

类的结构是[DataContract]

public class class1
{
    [DataMember]
    public string A1;

    [DataMember]
    public int A2;

    [DataMember]
    public class2 class2Instance;
}

[DataContract]
public class class2
{
    [DataMember]
    public string B1;

    [DataMember]
    public int B2;     
}

我使用xmlserializer序列化class1。

我不想序列化具有默认值的属性。请建议。

1 个答案:

答案 0 :(得分:0)

您可以使用ShouldSerialize方法。

只需在方法名称的末尾添加成员名称(ShouldSerializeA1A1),XmlSerializer将调用它以了解它是否应该可序列化。添加你的逻辑(在你的情况下是默认的)

public class class1
{
    [DataMember]
    public string A1;

    [DataMember]
    public int A2;

    [DataMember]
    public class2 class2Instance;

    public Boolean ShouldSerializeA1()
    {
        return this.A1 != String.Empty;
    }

    public Boolean ShouldSerializeA2()
    {
        return this.A2 != 0;
    }

    public Boolean ShouldSerializeclass2Instance()
    {
        return this.class2Instance != null;
    }
}