我有一个方法,它在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序列化所有公共属性。