मैं वस्तुओं को स्ट्रिंग में क्रमबद्ध करना चाहता हूं, और वापस।
हम किसी ऑब्जेक्ट को स्ट्रीम और बैक में, सफलतापूर्वक चालू करने के लिए प्रोटोबॉफ-नेट का उपयोग करते हैं।
हालांकि, स्ट्रीम टू स्ट्रिंग और बैक ... इतना सफल नहीं है। के माध्यम से जाने के बाद StreamToString
और StringToStream
, नए Stream
प्रोटोबुफ़-नेट द्वारा deserialized नहीं है; यह एक Arithmetic Operation resulted in an Overflow
अपवाद को जन्म देता है। यदि हम मूल धारा का वर्णन करते हैं, तो यह काम करता है।
हमारे तरीके:
public static string StreamToString(Stream stream)
{
stream.Position = 0;
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
public static Stream StringToStream(string src)
{
byte[] byteArray = Encoding.UTF8.GetBytes(src);
return new MemoryStream(byteArray);
}
इन दोनों का उपयोग करके हमारा उदाहरण कोड:
MemoryStream stream = new MemoryStream();
Serializer.Serialize<SuperExample>(stream, test);
stream.Position = 0;
string strout = StreamToString(stream);
MemoryStream result = (MemoryStream)StringToStream(strout);
var other = Serializer.Deserialize<SuperExample>(result);