2014-02-12 81 views
3

下面是我的WCF DataContract基類WCF衍生DataContract不基地DataContract的財產繼承

[DataContract] 
    public class BaseClass 
    { 
     //some datamembers 
    } 

這裏是我的派生類....

[DataContract] 
    public class DerivedClass1 : BaseClass 
    { 
     [DataMember] 
     public string ProductName{get;set;} 
    } 

由於需求的某些變化,我添加了一個派生類型,它也具有相同的屬性'ProductName'。

所以代碼結構,現在是....

[DataContract] 
     public class BaseClass 
     { 
      //some datamembers 
      [DataMember] 
      public string ProductName{get;set;} 
     } 

[DataContract] 
     public class DerivedClass1 : BaseClass 
     { 
      //[DataMember] 
      //public string ProductName{get;set;} property moved to base class 
     } 

[DataContract] 
      public class DerivedClass2 : BaseClass 
      { 
       //some datamembers specific to DerivedClass2 
      } 

讓我感動財產「產品名稱」基類。但是現在,當從客戶端調用現有的datacontract時,返回Derivedclass1的列表,我沒有看到productName作爲響應。不知何故,我的DerivedClass1並沒有影響base的productName屬性。 可能是什麼原因?我在編寫代碼時犯了什麼錯誤?

+0

是否也用'DataMember'屬性註釋的基類成員?編輯:nevermind ...更仔細閱讀帖子。您是否重新創建了來電者的服務參考? – mckeejm

+0

它工作正常!我試過了。沒有問題 –

+0

你是什麼意思'我沒有看到productName的迴應? 'ProductName'屬性是否設置爲null?你有沒有更新客戶端的代理定義? – YK1

回答

0

嘗試在派生類上使用[KnownType(typeof(BaseClass))]]屬性,並確保更新服務引用。

0

我已經試過這個,它工作正常!

Base Type

這裏是子類SychRequests

Child class

這是我在智能感知得到。

Working

你缺少什麼其他,什麼都不能說。如果您無法看到ProductName,那麼可能是因爲您沒有在您的請求中發送它。