0

我有点困惑ISerializationSurrogate,什么时候可能有必要。那么,如果你使用它,你实现了什么目标?

4

2 回答 2

1

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

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

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

于 2013-10-11T12:30:14.417 回答
1

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

 Size: {
   Width: 20,
   Height: 30
 }

进入

 Size: 20x30

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

于 2013-08-16T13:32:47.143 回答