我在成功反序列化已使用预编译的 protobuff 序列化程序类序列化的字节数组时遇到了困难ModelSerializer
。使用它,我定义的数据模型中的类的序列化和反序列化MyData
在我序列化到文件并从文件反序列化到MyData
.
不过,我还有一个要求,就是序列化为MyData
字节数组,反序列化字节数组为MyData
. 下面是调用的基本类MyDataConverter
,它有 2 个静态方法,一个用于转换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;
}
}