C# 如何在从类转换为Xml时忽略可为空的整数
我有一个WCF服务,它有: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
[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; }