(注:本篇文章是本人根据msdn,各位同行的心得再加上自己对序列化的一些想法汇集而成,如有不当,还请指教)
     
    序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。反之,反序列化根据流重新构造对象。这里主要介绍两种序列的方法:一是XML 序列化,二是Binary序列化。

         1.   XML序列

            XML 序列化仅将对象的公共字段和属性值序列化为 XML 流。XML 序列化不包括类型信息。例如,如果 Library 命名空间中有一个 Book 对象,将不能保证它会被反序列化为同一类型的对象。XML 序列化不转换方法、索引器、私有字段或只读属性(只读集合除外)。要序列化对象的所有字段和属性(公共的和私有的),请使用 ,而不要使用 XML 序列化.XML 序列化中最主要的类是 类,它的最重要的方法是 Serialize 和 Deserialize 方法。我们可以利用它提供这两个方法实现对象的序列与反序列.下面我提供我自己编写的code,主要是用xmlserialize来实现对象的序列与反序列,代码如下:
   
         首先,声明两个用来序列的对象,一个用户设置对象和一个图层参数对象,用户设置对象包括了用户信息和一个图层列表:

 1

     然后,声明一个进行序列与反序列的类,其中WriteDataToFile实现将文件写如本地指定的路径,ReadDataFormFile方法实现将文件从磁盘中读取:

C# 实现复杂对象的序列化与反序列化class Serialize
            
               layerPara = new LayerPara();
C# 实现复杂对象的序列化与反序列化            layerPara.ID 
= 200;
C# 实现复杂对象的序列化与反序列化            layerPara.MC 
= "管线";
C# 实现复杂对象的序列化与反序列化            layerPara.Layer 
= "gx";
C# 实现复杂对象的序列化与反序列化            layerPara.GBCode 
= 5;
C# 实现复杂对象的序列化与反序列化            layerPara.GeoType 
= 6;
C# 实现复杂对象的序列化与反序列化            layerPara.MinScale 
= 100;
C# 实现复杂对象的序列化与反序列化
C# 实现复杂对象的序列化与反序列化            userSetting.userLayerParas.Add(layerPara);
C# 实现复杂对象的序列化与反序列化           
C# 实现复杂对象的序列化与反序列化        }

C# 实现复杂对象的序列化与反序列化
C# 实现复杂对象的序列化与反序列化        
private void WriteDataToFile(UserSetting tempUserSetting)

现在我们就可以在Main()方法中进行调用了,下面是一个进行测试的类,包含了主程序的Main()方法:

C# 实现复杂对象的序列化与反序列化public class Testing

   2.Binary序列
      这里主要谈的是BinaryFormatter比第一种方法更好用,它同样也有Serialize和DeSerialize方法,具体代码我就贴序列与反序列的代码了,其原理与过程都大致相同,下面是序列与反序列的代码:

C# 实现复杂对象的序列化与反序列化private void SaveLayerToAppPath(List<LayerPara> tempLayerParas)
        }

   总结:主要是根据的实际项目需要了,看你适合哪种方法.

相关文章:

  • 2021-12-11
  • 2022-02-15
  • 2021-11-06
  • 2021-10-29
  • 2021-10-28
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-04
  • 2022-01-20
相关资源
相似解决方案