当前位置:  开发笔记 > 编程语言 > 正文

为什么XmlSerializer不需要标记类型[Serializable]?

如何解决《为什么XmlSerializer不需要标记类型[Serializable]?》经验,为你挑选了2个好方法。

在C#中,如果我想序列化一个实例XmlSerializer,那么对象的类型不必用[Serializable]属性标记.但是,对于其他序列化方法,例如DataContractSerializer,需要将类标记为[Serializable][DataContract].

是否有关于序列化要求的标准或模式?



1> Eric Rosenbe..:

这是因为XmlSerializer仅序列化公共字段/属性.其他形式的序列化可以序列化私有数据,这构成了潜在的安全风险,因此您必须使用属性"选择加入".



2> Marc Gravell..:

安全不是唯一的问题; 简单地说,序列化只对某些类有意义.例如,它使串行化"连接"变得很小.一个连接字符串,当然,但连接本身?罗.同样,任何需要非托管指针/句柄的东西都不会很好地序列化.代表也不是.

此外,XmlSerializerDataContractSerializer(默认)是序列化,而不是图形序列化-因此,任何递归链接(如Parent)将导致其破裂.

使用序列化程序的首选标记标记类只是一种说法"它应该有意义".

IIRC,既[XmlSerializer[DataContractSerializer] 使用非常约苛刻之类的刚性[Serializable],[DataContract]或者[IXmlSerializable],但他们已经变得有点更自由的最近.


常见的误解:Xml Serializer从不需要[Serializable],也从未与[Serializable]相关联.[Serializable]属性从未对Xml Serializer的操作或行为产生任何影响.他们一直都是无关的,除了人们的想法!
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有