DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 委托能不能序列化
委托能不能序列化
編輯:XML詳解     

委托能不能序列化

  圖片看不清楚?請點擊這裡查看原圖(大圖)。

  XMLSerialize: 序列化是將對象轉換成易於傳輸的形式的過程。例如,可以序列化對象,並使用 HTTP 通過 Internet 在客戶端和服務器之間進行傳輸。另一方面,反序列化在流中重新構建對象。

  XML 序列化只將對象的公共字段和屬性值序列化為 XML 流。XML 序列化不包括類型信息。例如,如果 Library 命名空間中存在 Book 對象,則不能保證將它反序列化為同一類型的對象。

  注意: 

  XML 序列化不能轉換方法、索引器、私有字段或只讀屬性(只讀集合除外)。要序列化對象的所有公共和私有字段和屬性,請使用 BinaryFormatter 而不要使用 XML 序列化。

  SoapFormaterr:

  以 SOAP 格式將對象或整個連接對象的圖形序列化和反序列化。

  BinaryFormatter:

  以二進制格式將對象或整個連接對象圖形序列化和反序列化。

  委托可以通過 BinaryFormatter,SoapFormatter序列化,但是不能通過XMLSerialize序列化。

using System;

 

using System.Runtime.Serialization.Formatters.Soap;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

using System.XML;

using System.XML.Serialization;

 

class Program

{

    delegate void foo(string formatter);

 

    static void Main(string[] args)

    {

 

        foo TestHandler = new foo(Test);

       

 

        BinaryFormatter bFormatter = new BinaryFormatter();

 

 

        SoapFormatter sFormatter =new SoapFormatter();

 

 

        try

        {

            XmlSerializer xFormatter = new XMLSerializer(typeof(foo));

        }

        catch(Exception ex)

        {

            Console.WriteLine(ex.Message);

        }

      

     

 

        TestHandler("None");

 

        string filePath = AppDomain.CurrentDomain.BaseDirectory;

        string fileName="soap.XML";

        string fullPath= Path.Combine(filePath, fileName);

 

        string fileName2="binary.txt";

        string fullPath2= Path.Combine(filePath, fileName2);

 

        //string fileName3 = "xml.XML";

        //string fullPath3 = Path.Combine(filePath, fileName3);

       

        using (FileStream fs = new FileStream(fullPath, FileMode.Create))

        {

            sFormatter.Serialize(fs, TestHandler);

            fs.Close();

 

 

        }

 

        using (FileStream fs2 = new FileStream(fullPath2, FileMode.Create))

        {

            bFormatter.Serialize(fs2, TestHandler);

            fs2.Close();

        }

 

       

        using (FileStream fs = new FileStream(fullPath, FileMode.Open))

        {

            foo deserHandler = (foo)sFormatter.Deserialize(fs);

            deserHandler("Soap");

            fs.Close();

        }

 

        using (FileStream fs = new FileStream(fullPath2, FileMode.Open))

        {

            foo deserHandler = (foo)bFormatter.Deserialize(fs);

            deserHandler("Binarry");

            fs.Close();

        }

 

        Console.ReadLine();

    }

 

    static void Test(string formatter)

    {

        Console.WriteLine(" Formatter:{2} Test invoked. Call Time:{0} ticks:{1}",DateTime.Now.ToString(),DateTime.Now.Ticks.ToString(),formatter);

    }

}

運行結果:

委托能不能序列化

  圖片看不清楚?請點擊這裡查看原圖(大圖)。


XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved