В protobuf-net я могу иметь поле байтов? - PullRequest
1 голос
/ 24 июля 2011

В protobuf-net я могу иметь байтовое поле?Является ли поле байтового массива частью спецификации буферов протокола?

В основном я хочу передавать различные объекты по проводам.В этом случае полезная нагрузка byte [] будет другим сериализованным объектом буфера протокола.Я делаю это, поэтому мне не нужно конкретно

спасибо

public sealed class CellUpdateTransmission
{
    public int RowIndex { get; private set; }
    public int CellIndex { get; private set; }          
    public byte[] Payload {get;private set;}

Ответы [ 2 ]

1 голос
/ 24 июля 2011

Да, поддерживаются как byte, так и byte[]; последний отображается на bytes в спецификации .proto. Это на самом деле то же самое, что и то, как подчиненное сообщение обычно представляется в любом случае. Просто сообщите сериализатору об участнике (проще всего: добавив атрибут, такой как [ProtoMember(3)]).

1 голос
/ 24 июля 2011

да, вы можете.На втором этапе переместите байты в поток памяти, а затем выполните десериализацию в обычном режиме.

            byte[] Payload= datafromsomewhere;
            var ms = new MemoryStream(Payload);
            var req = Serializer.Deserialize<AbcClass>(ms);
...