gpt4 book ai didi

c# - [System.SerializableAttribute()] 是做什么的?

转载 作者:IT王子 更新时间:2023-10-29 04:45:26 24 4
gpt4 key购买 nike

我正在查看其他人的 C# 代码,在公共(public)枚举之前有以下几行:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]

有人能用简单的英语解释一下 SerializableAttribute 行的作用吗?

我已经遇到了 this page - 这对我来说意义不大 - 我是 C# 的新手。

最佳答案

这其实很微妙...

从表面上看,答案很简单“它将 SerializableAttribute 添加到类的元数据中”,其中 SerializableAttribute 的目的是通告(比如 BinaryFormatter)一个类型可以被序列化。 BinaryFormatter 将拒绝序列化未明确声明要序列化的内容。这可能是 BinaryFormatter 用于实现远程处理 并防止数据意外泄漏到远程处理边界的结果。

请注意,大多数序列化程序并不关心 SerializableAttribute,因此这会影响 BinaryFormatter 之类的东西。例如,XmlSerializerDataContractSerializerJavaScriptSerializer、JSON.NET 或 protobuf-net 都不关心 SerializableAttribute .

但是,实际上,它不是标准属性,但编译器有特殊处理:

  • 大多数属性在技术上都是 .custom instance 值(在 IL 术语中)
  • 然而,SerializableAttribute 实际上映射到 CLI .class 标志,serializable

这不会改变含义,但是:作为一个新奇的事实,SerializableAttribute 实际上并未实现为属性。 p>

关于c# - [System.SerializableAttribute()] 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12461321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com