空のリストのシリアル化にはいくつかの問題があります。CF 2.0 を使用した .NET のコード
//Generating the protobuf-msg
ProtoBufMessage msg = new ProtoBufMessage();
msg.list = new List<AnotherProtobufMessage>();
// Serializing and sending throw HTTP-POST
MemoryStream stream = new MemoryStream();
Serializer.Serialize(stream, msg);
byte[] bytes = stream.ToArray();
HttpWebRequest request = createRequest();
request.ContentLength = bytes.Length ;
using (Stream httpStream = request.GetRequestStream())
{
httpStream.Write(bytes, 0, bytes.Length);
}
ストリームに書き込もうとすると例外が発生しました (bytes.length が範囲外)。しかし、空の List を持つ型は 0 バイトであってはなりませんよね (型情報?)?
応答にはクライアントへのサーバーからのメッセージがあるため、このタイプの送信が必要です。