2013-04-17 87 views
1

我有一個問題,整數克隆整數,這裏是啞類,我用如何克隆與protobuf的

[ProtoContract(ImplicitFields = ImplicitFields.AllFields)] 
public class Ac 
{ 

    private int _ao = -1; 

    public int AO 
    { 
     get 
     { 
      return _ao; 
     } 
     set 
     { 
      _ao = value; 
     } 
    } 
}; 

當我克隆它,當AO是零,我得到的-1 值當我嘗試添加默認屬性,我得到正確的項目,但在一些屬性,當它保持-1,我得到0

+0

看來,當我添加SkipConstructor出現問題= true - 強制它始終爲0 –

回答

1

這涉及到默認值。由於在時間深度上失去原因,protobuf-net在v1中假定爲零默認值。您可以在類型模型中關閉此功能,但更簡單的選項是通過將[DefaultValue(-1)]添加到該字段來告訴它缺省值爲-1。您還可以禁用反序列化([ProtoContract(SkipConstructor=true)]在構造函數,但我個人覺得這不太令人滿意。

關閉零默認行爲是更可能廣泛。

+0

但是當我添加skipconstructor時,它跳過默認值並使用0作爲int值 –

+0

@ li-raz是的,它們的意思是* alternative * options,而不是* cumulative * options –