看网上说序列化 是内存和硬盘数间数据流的写入写出。
公司项目中  数据库连接文件 用到了序列化,XmlSerializer,把数据库的连接参数写道XML里面
然后连接的时候从这里面读
这样写有什么好处呢?
我用streamwriter写到TXT里面也可以呀,为什么要用序列化写道XML中呢
不懂序列化的优点在哪?
哪位有用序列化用的深刻的朋友,用简单的例子说明下?

解决方案 »

  1.   

    忘了说明下,
    [Serializable]这个作用是什么,是不是表明这个类里面的所有属性是将要序列化的属性
      

  2.   

    序列化就是把一个对象保存到一个文件或数据库字段中去
    在进程下次启动时读取上次保存的对象的信息   
    在不同的AppDomain或进程之间传递数据   
    在分布式应用系统中传递数据   
    XML序列化XmlSerializer 
      

  3.   

    System.Xml.Serialization.XmlSerializer s = new System.Xml.Serialization.XmlSerializer(typeof(object));
    public static void SaveXml(string filePath, object obj, System.Type type)
      {
      using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
      {
      System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(type);
      xs.Serialize(writer, obj);
      writer.Close();
      }
      }
      

  4.   

    比如web.config或者app.config文件,你可以方便地编辑其内容呀?!如果是一对二进制乱码字符,你怎样手工编辑?!同时,当xml反序列化给对象时是非常“宽松”的,你的对象多一个、少一个字段/属性,有时甚至字段/属性的类型稍微改变了,也不会出问题。而二进制反序列化是非常“挑剔”的。xml是更大范围的工业标准,不是微软一家的标准。
      

  5.   

    标记为[Serializable]的类,表示该类支持在C#中常见的序列化的方法
    主要有三个:BinaryFormatter、SoapFormatter、XML序列化
    对于不需要序列化的属性,在上面加个[NonSerialized]就行了另外还可以序列化为Json对象,需要引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化
      

  6.   

    呵呵,xml序列化的属性控制可以看msdn:http://msdn.microsoft.com/zh-cn/library/3dkta8ya(v=VS.80).aspx
      

  7.   

    public static void SaveXml(string filePath, object obj, System.Type type)
      {
      using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath))
      {
      System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(type);
      xs.Serialize(writer, obj);
      writer.Close();
      }
      }
      

  8.   

    序列化是把数据(对象)以通用的格式(2进制/XML)等转化出来。可以跨平台/进程等传递。
    每一种格式都有自己的利弊,要根据实际情况选择。
    至于你公司的方式,当然是为了简单明确,数据库的连接参数写道XML里面然后连接的时候从这里面读。这个文件还可以干别的用。
    XML文件的功能很强大,你可以把它当成一个数据库来看。