我正在寻找别人的C#代码,在公开枚举之前有以下几行:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
Run Code Online (Sandbox Code Playgroud)
有人可以用简单的英语解释这些行中的每一行是做什么的.
Mar*_*ell 59
这其实非常微妙......
从表面上看,答案就是"它将类添加SerialiableAttribute到类的元数据中",其目的SerializableAttribute是宣传类似的东西(类似的东西BinaryFormatter)可以序列化类型.BinaryFormatter将拒绝序列化未明确通告序列化的内容.这可能是BinaryFormatter用于实现远程处理以及防止数据意外泄漏到远程边界的结果.
请注意,大多数串行不关心有关SerializableAttribute,所以这只能影响事情喜欢BinaryFormatter.例如,没有XmlSerializer,DataContractSerializer,JavaScriptSerializer,JSON.NET或protobuf网真正关心的SerializableAttribute.
但实际上,它不是标准属性,而是由编译器进行特殊处理:
.custom instance值(以IL表示)SerialiableAttribute实际上映射到CLI .class标志,serializable这并没有改变含义,但是:作为一个新奇的事实,SerializableAttribute实际上并不是作为属性实现的.
Cri*_*hes 11
System.SerializableAttribute向运行时指定可以序列化该类的实例
例如.您在WCF服务调用中返回一个对象.如果该对象具有此属性并且其中的所有对象都是可序列化的,则运行时将该对象转换为JSON或XML,具体取决于Web服务返回的资源类型.
这只是长手[Serializable]。它将类标记为可以与其他格式“转换”的类。
常见的示例包括将类“序列化”为 JSON 或 XML 数据结构,以及从此类结构进行等效转换。
考虑一个类
[Serializable]
class MyClass
{
    public string Mem1 {get; set;}
    public string Mem2 {get; set;}
}
...
MyClass mc = new MyClass;
mc.Mem1 = "Hello";
mc.Mem2 = "World";
Run Code Online (Sandbox Code Playgroud)
当序列化为 JSON 结构时,我们得到:
"{'Mem1':'Hello','Mem2':'World'}"
Run Code Online (Sandbox Code Playgroud)
考虑到该过程的双向性质,如果我们收到这种格式的信息(例如从某些 Web 服务返回),那么我们可以愉快地将其序列化回此类的实例。
在 JSON 示例的基础上,我们在命名空间中找到了一系列System.Web.Script.Serialization可以帮助我们完成此任务的类。特别是,该类JavaScriptSerializer帮助我们提供Serialize()方法Deserialize。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           17129 次  |  
        
|   最近记录:  |