[英]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.