如何防止wcf服务中的数据成员序列化



我有一个方法,它在InsuredGeneralInfo和InsuredAddrInfo中有一些成员,如createdby、createddate等,我不想序列化它们。我没有向它们添加[datamember]属性,但当我使用wcf客户端进行测试时,我仍然在响应xml中看到了它们。有什么原因吗?

这是接口中的声明

public class InsuredInfo
{
    public InsuredGeneralInfo insuredGeneralInfo { get; set; }
    public InsuredAddressInfo insuredAddrInfo { get; set; }
}
[DataContract]
public class InsuredGeneralInfo
{
    [DataMember]
    public string FirstName { get; set; }
    [DataMember]
    public string MiddleInitial { get; set; }
    [DataMember]
    public string LastName { get; set; }
    [DataMember]
    public string Gender { get; set; }
    [DataMember]
    public string DOB { get; set; }
    [DataMember]
    public string SSN { get; set; }
    public string CreatedBy { get; set; }
    public DateTime CreatedDate { get; set; }
    public string LastModifiedBy { get; set; }
    public DateTime LastModifiedDate { get; set; }
}

输出:

<insuredGeneralInfo>
      <FirstName>test</FirstName>
      <MiddleInitial>t</MiddleInitial>
      <LastName>test</LastName>
      <Gender>male</Gender>
      <DOB>12-25-1982</DOB>
      <SSN>123456789</SSN>
      <CreatedBy>ad</CreatedBy>
      <CreatedDate>2015-06-24T16:12:00</CreatedDate>
      <LastModifiedBy>ad</LastModifiedBy>
      <LastModifiedDate>2015-06-24T16:12:00</LastModifiedDate>
    </insuredGeneralInfo>

使用WCF,您可以选择使用DataContract/Datamember或仅使用公共属性。

如果使用不带属性的公共属性,则所有公共属性都将被序列化。如果使用DataContract/Datamember,则只有具有DataContract/Datemember的字段才会被序列化。

在您的情况下,根类InsuredInfo没有用DataContract/Datamember标记,因此WCF序列化所有公共属性。

最新更新