你有没有使用过SerializationSurrogate以及为什么需要这个?

时间:2013-08-01 08:54:37

标签: c# .net serialization deserialization

我对ISerializationSurrogate以及什么时候可能有点困惑。所以,如果你使用过它,那么你的目标是什么?

2 个答案:

答案 0 :(得分:1)

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

 Size: {
   Width: 20,
   Height: 30
 }

进入

 Size: 20x30

其他用途可能包括启用不可变对象的序列化/反序列化。

答案 1 :(得分:1)

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

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

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