Why don't use serialization attribute With XMLSerializer in c#.
http://msdn.microsoft.com/en-us/library/71s92ee1.aspx
Here OrderedItem class is not serialized. What is the reason?
Why don't use serialization attribute With XMLSerializer in c#.
http://msdn.microsoft.com/en-us/library/71s92ee1.aspx
Here OrderedItem class is not serialized. What is the reason?
OrderedItem
非常序列化......我猜你的意思是“为什么它没有[Serializable]
属性?”。如果是这样,答案很简单:序列化程序不需要它。它是etc要求的BinaryFormatter
,但他们正在做一些不同的事情——他们正在序列化对象的内部状态。但是,如今大多数序列化程序都不会检查这一点。例子:
XmlSerializer
DataContractSerializer
(以及所有变体)JavascriptSerializer
基本上,它只是没有必要。也许关键的区别在于,BinaryFormatter
可能会意外(没有属性)最终通过远程边界发送不适当的数据,这可能会导致大问题。
许多“轻量级”框架甚至都没有[Serializable]
定义。
BinaryFormatter 使用 [Serializable] 属性。但是 XMLSerializer 不需要这个。通过创建序列化程序
XmlSerializer serializer =
new XmlSerializer(typeof(OrderedItem));
他假设 OrderedItem 确实是可序列化的。
我发现的一个解释是,如果您将您的类标记为[Serializable]
并使用例如序列化该对象,BinaryFormatter
那么即使该类的实例的私有成员也将被序列化,因此您可以通过它来决定该类是否应该被序列化全部或使用 Xml 或 JS 序列化程序对其进行序列化,并且只获取公共成员。
因此,如果您使用 XmlSerializer 进行序列化,则只会对公共成员进行序列化。