none
Data Contract Equivalence RRS feed

  • 問題

  • 請教一個 Data Contract 等價的問題,以下兩個不同的宣告,照理說應該會有相同的 wsdl,也就是對外部來說,是同樣的合約介面… 但… 書上卻說這兩個 class 是不同的,為什麼?
    1.
    [DataContract]
    class Contract
    {
        [DataMember]
        public string FirstName;
        [DataMember]
        public string LastName;
    }

    [DataContract]
    class Customer : Contract
    {
        [DataMember]
        public int CustomerNumber;
    }

    2.
    [DataContract(Name = "Customer")]
    public class Person
    {
        [DataMember(Name = "FirstName")]
        public string Name;
        [DataMember(Name = "LastName")]
        public string Subname;
        [DataMember]
        public int CustomerNumber;
    }

    上面兩個 data contract 都會有三個 變數,且名稱皆為 FirstName、LastName、CustomerName,這應該算是等價的 data contract,所以,如果 server 端用第一種方式宣告,client 端用第二種方式宣告,應該可以順利 serialize、deserialize ?
    2009年3月2日 上午 11:39

解答

  • [DataContract] 
    [DataContract(Name = "Customer")]
    上面就不一樣了,轉到WSDL怎麼會一樣?
    Client 去使用時,產生的Class也不一樣.
    • 已提議為解答 Lolota Lee 2009年3月10日 上午 01:29
    • 已標示為解答 Lolota Lee 2009年3月12日 上午 03:04
    2009年3月9日 上午 09:46

所有回覆

  • Data Contract是一樣,但是類別(Class)是不一樣的, 一個是Contract(Customer), 另一個則是Person.



    微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan
    2009年3月9日 上午 09:08
  • [DataContract] 
    [DataContract(Name = "Customer")]
    上面就不一樣了,轉到WSDL怎麼會一樣?
    Client 去使用時,產生的Class也不一樣.
    • 已提議為解答 Lolota Lee 2009年3月10日 上午 01:29
    • 已標示為解答 Lolota Lee 2009年3月12日 上午 03:04
    2009年3月9日 上午 09:46