我真的無法弄清楚這一個! (如果甚至可能的話)。從WCF服務我們正在接收產品信息。產品數據合同有一些成員被定義爲字符串(但實際上是整數),但我們想要將它們作爲整數處理。WCF:DeSerialize字符串數據庫作爲int
當我將客戶端的契約中的數據類型從字符串更改爲int時,我的問題得到解決。然而,有些產品有一個string.Empty值,它不能被反序列化爲一個int。有沒有辦法解決?真的不希望在反序列化之後轉換我的結果集...
我真的無法弄清楚這一個! (如果甚至可能的話)。從WCF服務我們正在接收產品信息。產品數據合同有一些成員被定義爲字符串(但實際上是整數),但我們想要將它們作爲整數處理。WCF:DeSerialize字符串數據庫作爲int
當我將客戶端的契約中的數據類型從字符串更改爲int時,我的問題得到解決。然而,有些產品有一個string.Empty值,它不能被反序列化爲一個int。有沒有辦法解決?真的不希望在反序列化之後轉換我的結果集...
那麼,因爲您獲得的DataContract類總是部分類,所以您可以簡單地添加第二個部分類並提供「PropertyAsInt」屬性。
事情是這樣的:
public partial class Product
{
public int ProductNumberAsInt
{
get
{
if(!string.IsNullOrEmpty(ProductNumber))
{
int result = -1;
if(int.TryParse(ProductNumber, out result)
return result;
else
return -1;
}
return 0;
}
}
}
所以你只需簡單地定義一個ProductNumberAsInt
屬性,它會檢查稱爲ProductNumber
基礎字符串屬性。如果它是null
或string.Empty
,則返回默認值,例如, -1或0或任何適合你的作品。
如果它不爲空/空,您可以嘗試將它轉換爲Int,如果成功,則返回該int - 否則返回另一個指標(再次,請選擇,-1,0,對您有意義)。
這樣,您不必亂用WCF數據合同,也不用亂用手動黑客,並且可以根據需要調整這些額外屬性。
Marc
他marc,thanx的迅速回復。這確實是我考慮的一個選擇。問題是這些屬性中有三個,我將不得不重寫我的代碼以處理新屬性而不是舊屬性。至於返回值,使它們可以爲空可以解決這個問題。 – Syg 2009-10-09 14:58:02