C# 如何在从类转换为Xml时忽略可为空的整数

C# 如何在从类转换为Xml时忽略可为空的整数,c#,.net,xml,wcf,windows-services,C#,.net,Xml,Wcf,Windows Services,我有一个WCF服务,它有: [DataContract] public class Attribute { [DataMember] public string AttributeUsed1{ get; set; } [DataMember] public string AttributeUsed2{ get; set; } [DataMember] public string AttributeUsed3

我有一个WCF服务,它有:

[DataContract]
public class Attribute
{
      [DataMember]
       public string AttributeUsed1{ get; set; } 

       [DataMember]
       public string AttributeUsed2{ get; set; } 

       [DataMember]
       public string AttributeUsed3{ get; set; } 

       [DataMember(EmitDefaultValue = false)]
       public int AttributeNotUsed1{ get; set; } 

       [DataMember(EmitDefaultValue = false)]
       public int? AttributeNotUsed2{ get; set; } 

       [DataMember]
       public string AttributeNotUsed3{ get; set; } 

}
此外,我还有一个windows服务,它引用了上述Web服务。 在这个windows服务中,我有一个自定义类对象,并将其转换为XML

当我为自定义类构建对象时,我只为AttributeUsed1、AttributeUsed2和AttributeUsed3设置值。将对象序列化为XML后,我得到以下结果:

<AttributeUsed1>ABC</AttributeUsed1>
<AttributeUsed2>DEF</AttributeUsed2>
<AttributeUsed3>GHI</AttributeUsed3>
<AttributeNotUsed1>0<AttributeNotUsed1>
<AttributeNotUsed2>xsi: nil="true"</AttributeNotUsed2>
ABC
DEF
GHI
0
xsi:nil=“真”
我期望的结果如下。我根本不想显示整数变量。 我怎样才能做到这一点?。任何帮助都将不胜感激!:

  <AttributeUsed1>ABC</AttributeUsed1>
    <AttributeUsed2>DEF</AttributeUsed2>
    <AttributeUsed3>GHI</AttributeUsed3>
ABC
DEF
GHI
我假设您使用的是基于和属性的使用

若你们真的不希望你们的整数属性被序列化,不管它们的值是什么,只要用 属性:

[IgnoreDataMember]
public int? AttributeNotUsed2{ get; set; } 
顺便说一句,当我使用
DataContractSerializer
按默认值序列化类时,我没有看到
AttributeNotUsed1
AttributeNotUsed2
。我只看到与您未应用的属性相对应的元素
[DataMember(EmitDefaultValue=false)]


应用这两个属性是安全的
DataContractSerializer
忽略与
XmlSerializer
相关的属性,反之亦然。您可以阅读有关这两个序列化程序的更多信息。

如何将其转换为XML、XmlSerializer、IXmlSerializer等?我没有使用DataContractSerializer进行序列化。我用过之后,现在效果很好。非常感谢你!
<Attribute>
    <AttributeNotUsed3 i:nil="true" />
    <AttributeUsed1 i:nil="true" />
    <AttributeUsed2 i:nil="true" />
    <AttributeUsed3 i:nil="true" />
</Attribute>
[IgnoreDataMember]
[XmlIgnore]
public int? AttributeNotUsed2{ get; set; }