मैं ऑब्जेक्ट्स को तारों को क्रमबद्ध करना चाहता हूं, और पीछे।स्ट्रीम को स्ट्रिंग और पीछे कनवर्ट करना ... हम क्या खो रहे हैं?
हम किसी ऑब्जेक्ट को स्ट्रीम और बैक में सफलतापूर्वक बदलने के लिए प्रोटोबफ-नेट का उपयोग करते हैं।
हालांकि, स्ट्रिंग और पीछे स्ट्रीम ... इतना सफल नहीं है। StreamToString
और StringToStream
के माध्यम से जाने के बाद, नया Stream
प्रोटोबफ-नेट द्वारा deserialized नहीं है; यह Arithmetic Operation resulted in an Overflow
अपवाद उठाता है। यदि हम मूल धारा को deserialize, यह काम करता है।
हमारे तरीके:
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);
स्पष्टीकरण के लिए संपादित, ty। – flipuhdelphia
मेमोरीस्ट्रिया स्ट्रीम नहीं करना चाहिए? – Ehsan