コンパイル済みの protobuff シリアライザ クラスでシリアライズされたバイト配列を正常にデシリアライズする際に問題が発生していますModelSerializer
。これを使用すると、定義したデータ モデル内のクラスのシリアル化と逆シリアル化はMyData
、ファイルにシリアル化し、ファイルからMyData
.
ただし、別の要件があります。それはMyData
、バイト配列にシリアル化し、バイト配列を に逆シリアル化することMyData
です。以下は、バイト配列に変換するメソッドとバイト配列をMyDataConverter
に変換するメソッドの 2 つの静的メソッドを持つ、呼び出される基本クラスです。MyData
MyData
バイト配列に正常にシリアル化MyData
し、MemoryStream
. ただし、バイト配列を逆シリアル化すると、null 以外の のインスタンスが得られますが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;
}
}