簡體   English   中英

C#.net協議緩沖區 - protobuf-net支持序列化對象值字典?

[英]C# .net protocol buffers - protobuf-net support for serializing dictionary of object values?

我是協議緩沖區的新手,我正在為VS2010使用protobuf-net。 從我在這里閱讀協議緩沖區中的字典,似乎protobuf不能將具有對象類型的字典序列化為值。 但在他的網站上我讀到了這個:

關於類型的說明

支持的:

自定義類:標記為數據契約具有Silverlight的無參數構造函數:公共許多常見原語等單維數組:T [] List / IList Dictionary / IDictionary任何實現IEnumerable並具有Add(T)方法的類型代碼假定類型在選定成員周圍是可變的。 因此,不支持自定義結構,因為它們應該是不可變的。

這似乎得到了支持。

我可以像這樣成功編譯一個對象列表:

message ValuesObject {
    optional int32 SomeVal = 1;
    repeated SomeClass ListOfSomeClassTypes = 2;
}

這適用於List<SomeClass> 為什么我不能使用protobuf-net序列化一個Dictionary<int, SomeClass> 序列化Dictionary<int, SomeClass>的消息是什么樣的?

Dictionary<int,SomeClass>完全可以用protobuf-net輕松化。 Protobuf-net在代碼優先工作時最簡單 ,因此:*只需在模型中使用Dictionary<int,SomeClass> 您不需要使用.proto 在所有 -這主要是為了跨平台的目的。 .proto規范沒有字典的概念,但如果您需要使用.proto模式,則將其序列化為:

message KeyValuePairInt32SomeClass {
    required int32 Key = 1;
    required SomeClass Value = 2;
}

用字典作為

repeated KeyValuePairInt32SomeClass YourDictionary = [n]; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM