c# - 为什么必须用属性 [serializable] 标记一个类?

标签 c# serialization attributes serializable

因为您可以将任何文档转换为字节数组并将其保存到磁盘,然后将文件重建为其原始形式(只要您有其文件名等的元数据)。

为什么必须用 [Serializable] 等标记一个类?这是否只是相同的想法,“元数据”类型信息,所以当您将对象转换为它的类时,事物会被正确映射?

最佳答案

二进制序列化非常强大,它可以在不运行构造函数的情况下创建类的实例,并且可以在您声明为私有(private)的类中设置字段。常规代码当然不能这样做。通过应用 [Serializable] 属性,您可以明确允许它扰乱您的隐私部分。并且您隐式地只将该权限授予 BinaryFormatter 类。

XML 序列化不需要这种好吧,它只序列化公共(public)成员。

DataContractSerializer 也可以序列化私有(private)成员。因此,它需要再次明确同意,现在使用 [DataContract] 属性。

关于c# - 为什么必须用属性 [serializable] 标记一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595104/

相关文章:

perl - 在 Perl/Moose 中,我可以有两个相互依赖的默认属性吗?

asp.net-mvc - MVCContrib,Html.Grid : How can I attach a row-based id to a td tag?

c# - 数据表联盟

c# - MassTransit 弄乱了我的字符串数据

c# - 如何让 ReadJson 返回 "default"行为——就好像 CanConvert 返回 false

c# - WCF CultureInfo 类型化 DataMember 序列化 CommunicationException

javascript - SVG - getElementsByClassName

c# - 身份的方案名称是什么?

c# - 用于用户模板的 RazorEngine - 安全性?

c# - 通过 WMI 自动更新设置