zoukankan      html  css  js  c++  java
  • .net序列化和反序列化(一)——自动序列化

    .Net的自动序列化和反序列化对象的方法是通过反射实现的。因此我们不仅可以序列化public字段,还可以序列化private字段和基类的字段。

    .Net在序列化是把对象的状态保存在流(stream)中。因此,只要选择一个合适的流类型就可以将对象序列化到任何媒介。例如,文件、网络、xml等。但是静态字段是不能序列化的。

    Serializable属性

    你可以在类的定义中使用Serializable属性,表示类是可序列化的。

    [Serializable]
        
    public class MyClass
        {
            
    private int Id;

            
    private string Name;
        }

    NonSerialized属性

    在一个可序列化得类中,如果有不能被序列化得成员该怎么办呢?解决方法是,要标记类成员的属性为NonSerialized。

     1 [Serializable]
     2 public class MyClass
     3 {
     4     private int Id;
     5 
     6     private string Name;
     7 
     8     [NonSerialized]
     9     private Object State;
    10 }

    IDeserializationCallback接口

    在反序列化时,.net将每个不可序列化得成员变量初始化为该类型的默认值。然后由你提供的方法将变量设置为正确的值。为了做到这一点,我们需要在反序列化结束以后来完成我们定义的处理方法。此时需要序列化类实现IDeserializationCallback接口。在.Net反序列化对象之后,IDeserializationCallback的方法OnDeserialization()被调用,来完成我们自定义的反序列化步骤。

  • 相关阅读:
    警示
    【拒绝挂分】盘点蒟蒻ghy的各种sb错误
    牛客NOIPtg day5 B-demo的gcd
    数字校园APP——视频分享
    数字校园APP——软件需求规格说明书
    数字校园APP——可行性报告分析
    数字校园APP开发与应用
    结对编程第二次作业——四则运算自动生成器
    软件工程第四次作业
    软件工程第三次作业
  • 原文地址:https://www.cnblogs.com/hyl8218/p/1634604.html
Copyright © 2011-2022 走看看