我已经阅读了有关 protobuf 中字节数组处理的几个问题,只是想确保我做的事情正确。如果我忽略OverwriteList
每次加载/保存字节的大小都会增加。如果您为该属性提供默认值,那么如果您使用数组或列表始终指定覆盖,那么正确的方法是什么?
[ProtoContract]
class Settings
{
public Settings()
{
AccessCode = new byte[6];
Message = "hello";
Random r = new Random();
r.NextBytes(AccessCode);
}
[ProtoMember(1, OverwriteList=true)]
public byte[] AccessCode { get; set; }
[ProtoMember(2)]
public string Message { get; set; }
}
我正在使用来自 protobuf 的 Souce 2.0.0.569。
static void Main()
{
using (MemoryStream ms = new MemoryStream())
{
Settings s = new Settings();
Display(s);
Serializer.Serialize<Settings>(ms, s);
ms.Seek(0, SeekOrigin.Begin);
Settings newSettings = Serializer.Deserialize<Settings>(ms);
Display(newSettings);
}
}
static void Display(Settings s)
{
Console.WriteLine("Access Code Length = {0} Message = {1}", s.AccessCode.Length, s.Message);
}