2

Protobuf-net 可以选择序列化类的公共字段

[ProtoContract(ImplicitFields = ImplicitFields.AllPublic)]
public class Customer
{

}

为了使 ProtoBuf 能够适用于大多数 DTO,我必须将此属性添加到每个类。有没有办法全局设置它,所以如果被序列化的类没有任何属性,如 ProtoContract 或 DataContract,它会默认使用“ImplicitFields.AllPublic”吗?

4

1 回答 1

2

不,目前不支持。但是,在 v2 中,您可以通过以下方式在运行时告诉它类型

RuntimeTypeModel.Default.Add(typeof(Customer), false).Add({fields});

但目前没有一个可以接受的选项ImplicitFields(这只是一个疏忽,将在未来的构建中添加)。

我还与一些人讨论过添加一个在第一次看到新类型时触发的事件,这将允许您通过订阅事件来做到这一点。不过,这还没有写出来。

于 2012-06-20T08:18:34.567 回答