我对ISerializationSurrogate
以及什么时候可能有点困惑。所以,如果你使用过它,那么你的目标是什么?
答案 0 :(得分:1)
ISerializationSurrogate
可用于控制对象的序列化。在某些情况下,我用它来使线上表示更紧凑。例如转动
Size: {
Width: 20,
Height: 30
}
进入
Size: 20x30
其他用途可能包括启用不可变对象的序列化/反序列化。
答案 1 :(得分:1)
ISerializationSurrogate是我在(未)标记[Serializable]
并且无法修改的封闭程序集中包含的(de)序列化(List of)对象的首选方法。
实现此目标的唯一方法是一次手动构建一个属性的XML节点,这可能很乏味。现在我为每个要序列化的对象编写一个类文件,并映射我选择的属性。其余的都是自动发生的,因为您可以使用SurrogateSelector
映射这些Surrogate类。公共类(如List)是开箱即用的序列化。
另一个用途是Colin Bull在另一个答案中描述的那个。