如何在Protobuf.Net中映射系统枚举

时间:2011-03-05 14:17:12

标签: .net protobuf-net

我有一个类,其属性类型为System.IO.FileAttribute(enum)

使用protobuf-net进行序列化时出现错误:

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

我如何将系统枚举映射到与成员的合同?

1 个答案:

答案 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]上以这种方式运行,并且可选地允许传递直通(自动将其视为基础值)。