【问题标题】:How to serialize .Net Exceptions using Protobuf-Net?如何使用 Protobuf-Net 序列化 .Net 异常?
【发布时间】:2012-05-01 10:14:23
【问题描述】:

任何人都可以给我一个例子或指向我如何使用 Protobuf-Net 序列化/反序列化一些内置系统类的资源吗?

具体来说,我只是试图序列化/反序列化基 Exception 类和从它继承的所有其他异常类。我是否必须创建一个新的 RunTypeModel 来指定我需要序列化的每个可能的异常类,或者我可以以某种方式告诉 Protobuf-Net 以相同的方式序列化它们而不列出每一个?

非常感谢任何帮助,因为我是 Protobuf-Net 的新手,我仍在努力理解这一切。

【问题讨论】:

    标签: serialization protocol-buffers protobuf-net


    【解决方案1】:

    protobuf-net 旨在序列化 DTO 模型,但不是例外 - 与 XmlSerializer 等非常相似(但显然是二进制而不是 xml)。目前还没有内置序列化异常。可能会破解一些东西,但这并不是真正的设计功能。

    【讨论】:

    • 我最终通过创建一个 ExceptionProxy 类解决了这个问题,该类使用一点丑陋的反射从异常中提取数据并将其序列化。然后,我使用反序列化的 ExceptionProxy 类信息和更多反射来重新处理另一侧的异常图。它不漂亮,但效果很好。
    【解决方案2】:

    你真的不能像这样序列化一个类

    public class MyTest
    {
        [ProtoMember(1)]
        public Exception MyException { get; set; }
    }
    

    但是做个小改动就可以序列化

    public class MyTest
    {
        [ProtoMember(1, DynamicType = true)]
        public Object MyException { get; set; }
    }
    

    这是我发现序列化异常的唯一方法。

    【讨论】:

    猜你喜欢
    • 2013-06-16
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多