我有一个类,其属性类型为System.IO.FileAttribute(enum)
使用protobuf-net进行序列化时出现错误:
No wire-value is mapped to the enum System.IO.FileAttributes.Hidden, System, Archive
我如何将系统枚举映射到与成员的合同?
答案 0 :(得分:3)
这是一个[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]
上以这种方式运行,并且可选地允许传递直通(自动将其视为基础值)。