繁体   English   中英

如何防止在WCF服务中序列化数据成员

[英]how to prevent serializing datamember in wcf service

我有一个方法,它在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 / Datamember的字段将被序列化。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM