如何在WCF数据契约中传递强类型类引用

时间:2016-06-17 10:53:55

标签: c# wcf wcf-binding

我有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; }
}

1 个答案:

答案 0 :(得分:2)

  

我还需要做任何其他事吗

虽然您不需要使用DataMember属性来装饰您的服务类型(WCF仍将序列化它们,只要它们只包含可序列化类型),您通常仍应使用该属性。

来自https://stackoverflow.com/a/4836803/569662

  
      
  • 没有[DataContract],您无法为您的数据定义XML命名空间
  •   
  • 没有[DataMember],您无法序列化非公共属性或字段
  •   
  • 没有[DataMember],您无法定义序列化顺序(Order =),DCS将按字母顺序序列化所有属性
  •   
  • 没有[DataMember],您无法为您的属性定义不同的名称(Name =)
  •   
  • 没有[DataMember],您无法定义IsRequired =或其他有用属性
  • 之类的内容   
  • 没有[DataMember],您不能遗漏某些公共财产 - 所有公共财产将由DCS序列化
  •