如何防止在wcf服务中序列化datamember

时间:2015-06-24 21:16:40

标签: c# entity-framework wcf

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

这是Interface

中的声明
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>

1 个答案:

答案 0 :(得分:1)

With WCF you can choose to use DataContract / Datamember or just use public properties. If you use public properties without attributes then all public properties will be serialized. If you use DataContract / Datamember then only fields with DataContract / Datamember will be serialized. In your case the root class InsuredInfo is not marked with DataContract / Datamember, so WCF serializes all public properties.