【问题标题】:How to add a class to protobuf-net如何将类添加到 protobuf-net
【发布时间】:2011-04-27 17:55:19
【问题描述】:

我正在使用 protobuf-net,到目前为止我很喜欢它,但有一件事困扰着我。 我有一个类,我想在消息中使用,但它不在我的源中。

像这样:

[ProtoContract]
class Test{ 
    [ProtoMember(1)]
    public Otherclass Attr {get;set}
}
但 ProtoBuf 不知道如何序列化 Otherclass,我无法访问它的代码。 所以我需要告诉它怎么做,但是怎么做?

【问题讨论】:

    标签: c# serialization protobuf-net


    【解决方案1】:

    在 v1 中你不能,除非它恰好具有 xmlaerializer 或 datacontractserializer 属性。嗯,这不是相当真的......有一个GlobalOptions 切换在理论上应该可以工作,但如果类型发生变化则不是很宽容,因为它推断很多。

    这里更好的选择是查看“v2”,它可作为 alpha 下载。您的属性类型应该没问题,但您也可以告诉类型模型如何处理未属性类型;这都是通过 RuntimeTypeModel 实现的。

    【讨论】:

    • 谢谢,但是名字中的 ALPHA 太吓人了,看不下去了。
    • @Killili GlobalOptions 可能会起作用 - 否则,使用单独的 DTO 层是您的最佳选择,即将数据重新映射到您控制的对象
    • 只是一个问题:为未知类型添加回调不是很好吗?所以程序员可以添加自定义处理,比如返回一个 ProtoMemberAtrributes 列表来描述顺序和名称?
    • @Killili 这不是一个不合理的问题;但是这种类型的附加元数据已经是 v2 引入的一部分。将其添加到 v1 比完成 v2 需要更多的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多