This seems like a fairly simple use case, I don’t understand how the exception in the following code snippet is being thrown.
static void Main(string[] args)
{
using (var foobar = new MemoryStream())
{
ProtoBuf.Serializer.Serialize(foobar, new Foobar());
if (foobar.Length == 0)
throw new Exception("Didn't serialize");
}
}
[ProtoContract]
public class Foobar
{
[ProtoMember(1)]
public int FoobarInt { get; set; }
}
ProtoBuf is kinda weird…a zero-length serialized form is not “an error”, per se…
Think of it this way:
if you wanted to *de*serialize a stream and get the empty object you tried to serialize, an empty stream would suffice (i.e., the “new” of the object would do the same thing) but if there’s any data set on the object, now you need to actually save/load stuff
Now produces a byte array of
0x08, 0x01