关于序列化的问题

时间:2010-03-16 10:40:05

标签: c# serialization

序列化自定义类的更好方法是什么:在类上使用XMLSerializer或BinarryFormatter和[Serializable]属性?

3 个答案:

答案 0 :(得分:2)

如果不知道如何使用生成的文件及其生命周期,就无法回答这个问题。

该决定基于以下事实:“升级”二进制格式更加困难。如果对象模型发生更改,则不会正确反序列化。但是,如果您已经实现了自定义XML序列化/反序列化,那么您可以适当地处理“新”案例,并且生活将会很好。

因此,请更多地了解您将如何使用它,与谁共享信息,以及模型可能发生的变化。

FWIW,我有时会在给定项目中使用这两种类型的序列化。

答案 1 :(得分:1)

这实际上取决于你如何使用序列化类。如果要将其传递给其他程序或想要轻松调试它,请使用XML(但请注意,XMLSerializer可能会生成不兼容的XML输出,如多个根元素)。

在所有其他情况下,您可以使用二进制格式化程序。但请注意,如果稍后更改类,XML更适合 - 您可以使用XMLIgnore等来保持XML格式的完整。

答案 2 :(得分:0)

有时也会根据序列化输出的用途做出决定 - 虽然您可以公开WebService以获取二进制数组作为二进制序列化项,但您无法轻松利用Web服务除了.Net之外的任何东西(最终客户端可能需要对该类型的引用)。

使用XML意味着无论终端客户端上的平台/环境如何,都可以将服务公开给任何终端客户端