为什么XmlSerializer不需要标记类型?在C#中,如果我想使用XmlSerializer序列化一个实例,我不必用[Serializable]属性标记对象的类型。但是,对于其他序列化方法,例如DataContractSerializer,类需要标记为[Serializable]或[DataContract]。是否有序列化要求的标准或模式?这是因为XmlSerializer只序列化公共字段/属性。其他形式的序列化会序列化私有数据,存在安全隐患,所以必须使用“opt-in”属性。安全不是唯一的问题;简单地说,序列化只对某些类有意义。例如,它使序列化“连接”非常小。当然是连接字符串,但连接本身呢?罗。此外,任何需要非托管指针/句柄的东西都不能很好地序列化。代表也不是。此外,XmlSerializer和DataContractSerializer(默认情况下)是树序列化程序,而不是图形序列化程序-因此任何递归链接(如Parent)都会导致它中断。用序列化程序的首选标志标记一个类只是一种说“它应该有意义”的方式。IIRC、[XmlSerializer和[DataContractSerializer]对[Serializable]、[DataContract]或[IXmlSerializable]等要求非常严格,但最近它们变得更加开放。目前,.NetFramework中存在三种序列化形式。XmlSerialization–默认应用于公共字段和属性。仍然可以由XmlElementAttribute、XmlAttributeAttribute等控制...BinarySerialization-由SerializationAttribute控制。深度集成到CLRWCF序列化-DataContractAttribute等......不幸的是,用于序列化的标准单体模式。所有3个框架都有不同的要求和怪癖。以上是C#学习教程:为什么XmlSerializer不需要标签类型?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
