如果类在Protobuf-net中没有属性,有没有办法只序列化公共字段?

时间:2012-06-20 08:01:42

标签: c# .net protobuf-net

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

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

}

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

1 个答案:

答案 0 :(得分:2)

不,目前不支持。在v2中,可以,但是,在运行时通过

告诉它类型
RuntimeTypeModel.Default.Add(typeof(Customer), false).Add({fields});

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

我还与一些人讨论了添加在第一次看到新类型时触发的事件,这将允许您通过订阅事件来执行此操作。但这还没有写出来。