zoukankan      html  css  js  c++  java
  • 序列化、反序列化快速入门

    1.demo: 

    static Stream MySerialize(object o)
    {
                BinaryFormatter bf = new BinaryFormatter();
                MemoryStream stream = new MemoryStream();
                bf.Serialize(stream, o);
                return stream;
    }
    static object MyDeserialize(Stream stream)
    {
                BinaryFormatter bf = new BinaryFormatter();
                return bf.Deserialize(stream);
     }
     2.  序列化应用
       //深拷贝
            static object DeepCloneBySerialize(object o)
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Context = new StreamingContext(StreamingContextStates.Clone);
                MemoryStream stream = new MemoryStream();
                bf.Serialize(stream,o);
                stream.Position = 0;
                return bf.Deserialize(stream);
            }
     3. 使类型可序列化:为类型定制SerializableAttribute;
    注意:如果标记了类型,则类型下的字段都默认继承了这一个特性,但是不会被派生类继承:
        [Serializable]
        class Person { }
        class Employee : Person { } Person可以序列化,但是Employee不可以,也需定制Serializable;
     
      [NonSerialized] 将字段(不能是类型)标记为不被序列化。
     
      [OnSerialized]:在反序列化时,格式化器都会检查是否定制了这个特性;如果定制了,就会调用被该特性标记的方法,将可序列化的字段正确设置:
      [OnDeserialized]
      private void OnDeserialized(StreamingContext context){//….}
     
     
  • 相关阅读:
    OpenCV学习笔记__特征检测与匹配之 SURF算法(转)
    卷积的通俗理解(转)
    人数识别(转)
    Opencv中计算梯度、梯度幅值以及梯度方向的相关函数(转)
    阈值bar
    腐蚀、膨胀、开运算、闭运算、细化运算(转)
    opencv中的腐蚀与膨胀(转)
    自己写的二值图的轮廓图算法
    有关meanshift跟踪的理解(在opencv中实现)(转载)
    mfc中选取视频播放
  • 原文地址:https://www.cnblogs.com/qlbk/p/2997385.html
Copyright © 2011-2022 走看看