2011-11-23 8 views
9

deserialize करने में विफल मैं प्रोटोबफ-नेट का उपयोग कर ReadOnlyCollection क्रमबद्ध और deserialize करने की कोशिश कर रहा हूँ। हालांकि desobialization पर एक अपवाद फेंक दिया जाता है जब protobuf- नेट एक ReadOnlyCollection में एक सूची डालने का प्रयास करता है।प्रोटोबफ-नेट: ReadOnlyCollection

 var roc = new ReadOnlyCollection<byte>(new byte[] {1, 2, 3}); 
     var ms = new MemoryStream(); 

     Serializer.Serialize(ms, roc); 
     ms.Position = 0; 
     var roc2 = Serializer.Deserialize<ReadOnlyCollection<byte>>(ms); 

     Console.WriteLine(BitConverter.ToString(roc2.ToArray())); 

वहाँ के बजाय एक ReadOnlyCollection के रूप में इस रखने serializing List के रूप में/deserializing के लिए एक रास्ता है? वास्तविक अनुप्रयोग में, ReadOnlyCollection एक अपरिवर्तनीय वस्तु का एक हिस्सा है जिसे मैं क्रमबद्ध करना चाहता हूं, और इसे ReadOnlyCollection के रूप में रखना पसंद करूंगा।

+0

ओह, यह दिलचस्प है। * अभी * मुझे बस इतना कहना होगा कि "नहीं जो काम नहीं करेगा", लेकिन मैं कुछ तरीकों के बारे में सोच सकता हूं कि मैं इसे काम करने के लिए इसे ट्विक कर सकता हूं। हालांकि, यह deserialization कोर में परिवर्तन होगा। आप प्रोटोबफ-नेट पर फीचर अनुरोध के रूप में इसे लॉग इन करना चाहेंगे। –

+0

मैंने इसके लिए एक [मुद्दा] (http://code.google.com/p/protobuf-net/issues/detail?id=254) जोड़ा है और एक संभावित फिक्स है लेकिन मैं समस्या प्रकार को बदलना भूल गया है, इसलिए यह है एक दोष के रूप में सूचीबद्ध है। रवींद्र! मैंने देखा – Mark

+0

। धन्यवाद। मैं इसे प्राप्त करूंगा, लेकिन कृपया ध्यान रखें कि प्रोटोबफ-नेट मेरा दिन का काम नहीं है - इसलिए इसे उचित रूप से देखने में कुछ दिन लग सकते हैं। –

उत्तर

0

मुझे लगता है कि protobuf-net केवल संग्रह के रूप में संग्रह को deserialize। आप कर सकते थे:

var roc2aux = Serializer.Deserialize<List<byte>>(ms); 
var roc2 = new ReadOnlyCollection<byte>(roc2aux); 
Console.WriteLine(BitConverter.ToString(roc2.ToArray())); 
संबंधित मुद्दे