2013-07-09 22 views
-1

我已經成功使用WCF服務發送對象,但有一個類無法工作。 WCF服務將生成,並且我可以調用返回WCF測試客戶端中的對象的函數,但是一旦我更新了消費者項目中的服務引用後,我就無法使用該服務。我的WCF服務不會返回一個特定的類

這裏是類

//[Serializable] 
[DataContract] 
public class TillCompanySystem : INotifyPropertyChanged 
{ 

    // Internal private member variables 
    private String _sTillCompanySystemID = ""; 
    private String _sValue = ""; 

    // Events 
    //[field: NonSerialized] 
    public event PropertyChangedEventHandler PropertyChanged; 

    // Constructor 
    public TillCompanySystem() 
    { 

    } 

    // Public properties 
    #region Public Properties 

    // Public properties 
    [DataMember] 
    public String TillCompanySystemID 
    { 
     get { return _sTillCompanySystemID; } 
     set 
     { 
      _sTillCompanySystemID = value; 
      OnPropertyChanged(new PropertyChangedEventArgs("TillCompanySystemID")); 
     } 
    } 

    [DataMember] 
    public String Value 
    { 
     get { return _sValue; } 
     set 
     { 
      _sValue = value; 
      OnPropertyChanged(new PropertyChangedEventArgs("Value")); 
     } 
    } 

    // End region public properties 
    #endregion 

    // All objects need to support ToString 
    public override String ToString() 
    { 
     return TillCompanySystemID.ToString(); 
    } 

    // Public Events 
    public void OnPropertyChanged(PropertyChangedEventArgs e) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, e); 
    } 
} 

的副本我真的不知道爲什麼這是行不通的。我能想到的這個和其他類之間的唯一區別在於它之前是可序列化的,但我看不出現在會有什麼變化。但是,如果我從元數據中查看該類,該類仍然顯示爲可序列化的。我試過重建所有東西,但並沒有解決它。

有沒有人有任何想法?

在此先感謝

埃德

+3

以何種方式不能使用該服務?你有錯誤嗎? – Paddy

+0

我試過了一個快速測試應用程序,實體按預期返回。當然,只有公共屬性(DataMembers)纔會被序列化。即「ToString()」和「OnPropertyChanged」的服務器實現不會被引入客戶端代理類。 INotifyPropertyChanged接口在代理生成期間由Visual Studio識別,並在代理中重新實現。 – StuartLC

+0

當我更新服務引用時,沒有可用的服務。我右鍵單擊服務引用並在對象瀏覽器中查看,該服務不可用。我之前在服務中添加了新功能並沒有創建類數據合同時就已經看到了這一點。 –

回答

0

的原因,這是行不通的是,有人做了該項目的參考,這意味着該類總是可以訪問我的數據層項目的編譯版本已經能夠向項目添加新的類,並且它找到了它們,但是它不會重建這個特定的類以使它成爲數據合同,因爲它以編譯的形式存在。