【发布时间】:2023-03-23 20:11:01
【问题描述】:
我在成功反序列化已使用预编译的 protobuff 序列化程序类 ModelSerializer 序列化的字节数组时遇到了困难。使用它,我定义的数据模型MyData 中的类的序列化和反序列化在我序列化到文件并从文件反序列化到MyData 时起作用。
不过,我还有一个需求,就是将MyData序列化为字节数组,将字节数组反序列化为MyData。下面是名为MyDataConverter 的基本类,它有两个静态方法,一个将MyData 转换为字节数组,另一个将字节数组转换为MyData。
我可以成功地将MyData 序列化为字节数组并将其写入MemoryStream。但是,当我反序列化字节数组时,我确实得到了MyData 的非空实例,但其中的所有数据都丢失了(默认为零,或自定义类型的null 值)。
我会在这里出错吗?请注意,我确实使用了类似的代码来成功序列化到文件并从文件反序列化,因此 MyModel 和预编译的 ModelSerializer 可能都没有问题。但如有必要,我可以在此处粘贴一些信息。
public class MyDataConverter
{
public static byte [] MyDataToBytes (MyData myData)
{
MemoryStream stream = new MemoryStream();
ModelSerializer serializer = new ModelSerializer();
serializer.Serialize (stream, myData);
byte [] bytes = stream.ToArray();
Stream.Close();
return bytes;
}
public static MyData BytesToMyData (byte [] bytes)
{
MyData myData = null;
MemoryStream stream = new MemoryStream();
stream.Write (bytes, 0, bytes.Length);
ModelSerializer serializer = new ModelSerializer();
myData = (MyData) serializer.Deserialize (stream, myData, typeof (MyData));
stream.Close();
return myData;
}
}
【问题讨论】:
标签: c# serialization protobuf-net protocol-buffers