【问题标题】:Is there a way to serialize only public fields if class has no attributes in Protobuf-net?如果类在 Protobuf-net 中没有属性,有没有办法只序列化公共字段?
【发布时间】:2012-06-20 08:01:42
【问题描述】:

Protobuf-net 有一个选项来序列化类的公共字段

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

}

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

【问题讨论】:

  • 你可以做一些面向方面的编程:-)。并将属性注入所有公共字段。

标签: c# .net protobuf-net


【解决方案1】:

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

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

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

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

【讨论】:

  • 是否已添加此全局 ImplicitFields 选项?在 API 中似乎找不到它。
  • 第三版怎么样?
  • @runxc1 没有;老实说,这对我来说似乎不是一个理想的功能
猜你喜欢
  • 2013-06-16
  • 1970-01-01
  • 2015-09-10
  • 2021-01-14
  • 2017-12-29
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
相关资源
最近更新 更多