Как отобразить системные Enum в Protobuf.Net - PullRequest
3 голосов
/ 05 марта 2011

У меня есть класс со свойством типа System.IO.FileAttribute (enum)

При сериализации с protobuf-net я получаю ошибку:

No wire-value is mapped to the enum System.IO.FileAttributes.Hidden, System, Archive

Как бы яперейти к сопоставлению перечислений системы с договором с участниками?

1 Ответ

3 голосов
/ 05 марта 2011

Это перечисление [Flags], которое на самом деле не имеет прямой карты в protobuf (как определено в Google).Я просто переэкспонировал бы как int:

public FileAttributes Attributes {get;set;}

[ProtoMember(12)] // whavever
private int AttributesSerialized {
    get { return (int)Attributes; }
    set { Attributes = (FileAttributes)value; }
}

Кроме того, IIRC, я уже кодировал v2, чтобы автоматически работать таким образом на [Flags] и, при желании, разрешить передачу через перечисления (дляобрабатывать как базовое значение автоматически).

...