2011-04-06 41 views
0

我有一個Silverlight客戶端和WCF服務,我想有股類:Silverlight客戶端,datacontract和私人只讀成員

[DataContract] 
public class DatesAreFun 
{ 
    [DataMember] 
    private readonly DateTime _date; 

    [DataMember] 
    private readonly bool _isFun; 

    public DateTime DateTime { get { return _date; } } 
    public bool IsFun { get { return _isFun; } } 

    public DatesAreFun(DateTime date, bool isFun) 
    { 
    _date = date; 
    _isFun = fun; 
    } 
} 

的WCF側似乎通過線路發送相應的數據只是很好,但Silverlight方面並不喜歡它。它將WCF服務DatesAreFun類視爲與我的DatesAreFun類不同的類。

關於如何最好地解決這個問題的任何建議?謝謝!

+0

喲意味着什麼是對待不同類別?有沒有一個特定的錯誤,你正在得到?如果是的話,它何時會發生?您是否通過「添加服務引用」將該服務添加到Silverlight項目中,或者是使用接口定義和ChannelFactory手動創建服務代理? – 2011-04-06 23:07:53

回答

1

這是一個常見問題,在這裏已經被覆蓋了幾次。

當您添加服務引用,請務必點擊高級按鈕,然後確定您已經在引用程序複選框選中的重用類型,並在所有引用的程序集選項選擇重用類型。

您還必須創建一個以Silverlight運行時爲目標的新類庫程序集。這是因爲WCF服務引用的類庫將針對.Net框架的完整(或者可能是客戶端配置文件)版本,而Silverlight程序集不能這麼做(實際上Silverlight程序集只能引用其他Silverlight目標程序集)。在新的類庫中,您可以引用與完整版類庫所使用的物理文件相同的內容,詳細信息請參閱here(我曾經有過同樣的問題......)。您也可以通過this bunch of search results選擇相關問題。

根據您的操作方式,您可能還需要瀏覽服務參考文件的Reference.cs文件,然後更改指定數據實體的名稱空間。 (如果您更新或重新配置服務參考,則會重新生成該文件)。