none
对象数组xml序列化 RRS feed

答案

  • 你好!

    如果对象支持序列化,使用二进制或Xml序列化的方式将序列化的内容保存到本地。

    如果对象不支持序列化,可使用反射的方式。

    下面是二进制的方式请参考

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.IO;
    using System.Xml.Serialization;
    
    namespace ConsoleApplication1
    {
      class Program
      {
        static void Main(string[] args)
        {
          List<Sample> samples = new List<Sample>();
    
          samples.Add(new Sample() { Id = 1, Name = "1" });
          samples.Add(new Sample() { Id = 2, Name = "2" });
    
          System.IO.MemoryStream serializeMemory = new System.IO.MemoryStream();
          BinaryFormatter formatter = new BinaryFormatter();
          formatter.Serialize(serializeMemory, samples);
          byte[] bytes = new byte[serializeMemory.Length];
          serializeMemory.Seek(0, SeekOrigin.Begin);
          serializeMemory.Read(bytes, 0, bytes.Length);
          serializeMemory.Close();
          // 保存到本地文件
          File.WriteAllBytes(@"D:\test.txt", bytes);
    
          //System.IO.MemoryStream deserializeMemory = new System.IO.MemoryStream(bytes);
          // 从文件中读取
          System.IO.MemoryStream deserializeMemory = new System.IO.MemoryStream(File.ReadAllBytes(@"D:\test.txt"));
          BinaryFormatter deformatter = new BinaryFormatter();
          object rstObj = deformatter.Deserialize(deserializeMemory);
          List<Sample> qList_new = rstObj as List<Sample>;
          serializeMemory.Close();
        }
      }
    
      [Serializable]
      public class Sample
      {
        public int Id { get; set; }
        public string Name { get; set; }
      }
    }
    
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 wizardhy 2011年2月25日 9:12
    2011年2月25日 8:35
    版主

全部回复

  • 你好!

    如果对象支持序列化,使用二进制或Xml序列化的方式将序列化的内容保存到本地。

    如果对象不支持序列化,可使用反射的方式。

    下面是二进制的方式请参考

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.IO;
    using System.Xml.Serialization;
    
    namespace ConsoleApplication1
    {
      class Program
      {
        static void Main(string[] args)
        {
          List<Sample> samples = new List<Sample>();
    
          samples.Add(new Sample() { Id = 1, Name = "1" });
          samples.Add(new Sample() { Id = 2, Name = "2" });
    
          System.IO.MemoryStream serializeMemory = new System.IO.MemoryStream();
          BinaryFormatter formatter = new BinaryFormatter();
          formatter.Serialize(serializeMemory, samples);
          byte[] bytes = new byte[serializeMemory.Length];
          serializeMemory.Seek(0, SeekOrigin.Begin);
          serializeMemory.Read(bytes, 0, bytes.Length);
          serializeMemory.Close();
          // 保存到本地文件
          File.WriteAllBytes(@"D:\test.txt", bytes);
    
          //System.IO.MemoryStream deserializeMemory = new System.IO.MemoryStream(bytes);
          // 从文件中读取
          System.IO.MemoryStream deserializeMemory = new System.IO.MemoryStream(File.ReadAllBytes(@"D:\test.txt"));
          BinaryFormatter deformatter = new BinaryFormatter();
          object rstObj = deformatter.Deserialize(deserializeMemory);
          List<Sample> qList_new = rstObj as List<Sample>;
          serializeMemory.Close();
        }
      }
    
      [Serializable]
      public class Sample
      {
        public int Id { get; set; }
        public string Name { get; set; }
      }
    }
    
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 wizardhy 2011年2月25日 9:12
    2011年2月25日 8:35
    版主
  • 太感谢啦,解答得这么详细!
    2011年2月25日 9:12