【问题标题】:Have you ever used SerializationSurrogate and why you need this?您是否曾经使用过 SerializationSurrogate 以及为什么需要它?
【发布时间】:2013-08-01 08:54:37
【问题描述】:

我对@9​​87654321@ 以及何时可能需要感到有些困惑。那么,如果你使用它,你实现了什么目标?

【问题讨论】:

    标签: c# .net serialization deserialization


    【解决方案1】:

    ISerializationSurrogate 可用于控制对象的序列化。在某些情况下,我使用它来使在线表示更紧凑。比如转身

     Size: {
       Width: 20,
       Height: 30
     }
    

    进入

     Size: 20x30
    

    其他用途可能包括使不可变对象能够被序列化/反序列化。

    【讨论】:

      【解决方案2】:

      ISerializationSurrogate 是我对(反)序列化(反序列化)包含在未标记为 [Serializable] 且无法修改的封闭程序集中的对象的首选方法。

      实现此目的的唯一替代方法是手动构造您的 XML 节点一次一个属性,这可能很乏味。现在我为每个要序列化的对象编写一个类文件,并映射我选择的属性。其余的会自动发生,因为您可以使用 SurrogateSelector 映射这些代理类。通用类(如 List)开箱即用地序列化。

      另一个用途是 Colin Bull 在另一个答案中描述的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-01
        • 2015-07-04
        • 1970-01-01
        • 2011-10-22
        • 2020-10-25
        • 2011-07-21
        • 2017-12-28
        • 2014-03-04
        相关资源
        最近更新 更多