2009-10-27 74 views
0

我在WCF服務類中的屬性與初始值,如下圖所示屬性,在客戶端使用一些初始值WCF服務

private int mFieldLength_Name = 50; 
    [DataMember] 
    public int FieldLength_Name 
    { 
     get { return mFieldLength_Name; } 
     private set { mFieldLength_Name = value; } 
    } 

但是當我做在客戶端隨時調用,它返回'0'而不是'50'。

我該如何解決這個問題?

我試圖[數據成員(EmitDefaultValue = FALSE)] 但不工作... :(

謝謝

日劇

回答

1

是否使用在DataContracts同樣裝配客戶端,因爲你在服務器上?如果你生成自己的合同用於客戶端,它將不知道這種初始化,因爲這是一種行爲,不能通過網絡來翻譯。

W如果您選擇某種類型的「非自然」默認值(即50而不是0代表整數),您必須將DefaultValueAttribute應用於數據成員,以便DataContractSerializer認識到該值是默認值並且不會發出該值。

+0

德魯嗨, 對不起,這樣沿延遲迴復...... 我在那些財產還是沒能得到「50」爲默認值試圖DefaultValueAttribute。 – Riju 2009-12-08 07:09:09

+0

您還需要確保在數據合同類本身中實際初始化您的屬性(或後臺字段)爲50。這是因爲WCF永遠不會設置屬性,因爲XML中沒有元素甚至無法解析,.NET顯然會將其初始化爲0。 – 2009-12-08 15:43:19

4

我面臨同樣的問題;在做了很多次嘗試後,我終於發現問題在於DataType

我有一個數據類型Int32爲每個數據庫,並使用了具有類型String,它並沒有給任何編譯或執行問題作爲int可以在默認情況下被序列化到string性能。

但是我每次都看到空的價值,我將房產類型更改爲Int32,它的功能就像一個魅力。給它一個鏡頭,確認你的數據類型,因爲它們在編譯器上顯示正確的數據,直到第一次服務調用,但只要你通過服務,你會看到空的數據。

因此,如果我在一行中告訴解決方案,如果數據類型不相同;它可能會返回空值。

相關問題