আমি বস্তুগুলিকে স্ট্রিংয়ে এবং পিছনে সিরিয়ালাইজ করতে চাই।
আমরা কোনও অবজেক্টকে স্ট্রিম এবং ফিরে সাফল্যের সাথে রূপান্তর করতে প্রোটোবুফ-নেট ব্যবহার করি।
তবে স্ট্রিম টু স্ট্রিং এবং পিছনে ... এতটা সফল নয়। মধ্য দিয়ে যাচ্ছে পর StreamToString
এবং StringToStream
নতুন Stream
protobuf-নেট দ্বারা 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);