我有WCF的数据合约及其自定义类变量引用,我想知道我是否需要在配置或其他任何事情上做任何额外的事情。即AddressData
[DataContract]
public class MemberData : IIdentifiableEntity
{
[DataMember]
public int MemberID { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string Surname { get; set; }
[DataMember]
public string Forename { get; set; }
[DataMember]
public string MiddleName { get; set; }
[DataMember]
public string PrevSurname { get; set; }
[DataMember]
public System.DateTime DOB { get; set; }
[DataMember]
public string Sex { get; set; }
[DataMember]
public AddressData Address { get; set; }
[DataMember]
public ContactDetailData ContactDetail { get; set; }
[DataMember]
public MembershipData Membership { get; set; }
int IIdentifiableEntity.EntityId
{
get { return MemberID; }
set { MemberID = value; }
}
}
public class AddressData
{
public int MemberID { get; set; }
public int AddressType { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string AddressLine3 { get; set; }
public string PostCode { get; set; }
public string City { get; set; }
public string County { get; set; }
public string Town { get; set; }
public string Country { get; set; }
public MemberData Member { get; set; }
}
答案 0 :(得分:2)
我还需要做任何其他事吗
虽然您不需要使用DataMember属性来装饰您的服务类型(WCF仍将序列化它们,只要它们只包含可序列化类型),您通常仍应使用该属性。
来自https://stackoverflow.com/a/4836803/569662:
- 没有[DataContract],您无法为您的数据定义XML命名空间
- 没有[DataMember],您无法序列化非公共属性或字段
- 没有[DataMember],您无法定义序列化顺序(Order =),DCS将按字母顺序序列化所有属性
- 没有[DataMember],您无法为您的属性定义不同的名称(Name =)
- 没有[DataMember],您无法定义IsRequired =或其他有用属性
之类的内容- 没有[DataMember],您不能遗漏某些公共财产 - 所有公共财产将由DCS序列化