当前位置: 首页 > news >正文

建立论坛网站wordpress 笑话源码

建立论坛网站,wordpress 笑话源码,淘宝客如何建设自己的网站,镇雄县城乡建设局网站原文#xff1a;http://blog.csdn.net/zhoufoxcn/archive/2009/03/11/3978874.aspx .net中对象序列化技术浅谈 (转#xff09;序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化#xff0c;它将流转换为对象。这两个过程结合起来#xff0c;可… 原文http://blog.csdn.net/zhoufoxcn/archive/2009/03/11/3978874.aspx  .net中对象序列化技术浅谈 (转序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化它将流转换为对象。这两个过程结合起来可以轻松地存储和传输数据。例如可以序列化一个对象然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。反之反序列化根据流重新构造对象。此外还可以将对象序列化后保存到本地再次运行的时候可以从本地文件中“恢复”对象到序列化之前的状态。在.net中有提供了几种序列化的方式二进制序列化XML序列化SOAP序列化 二进制序列化所谓二进制序列化指的是对象序列化之后是二进制形式的。二进制序列化是通过BinaryFormatter类来实现的这个类位于System.Runtime.Serialization.Formatters.Binary命名空间下。 XML序列化所谓XML序列化是指对象序列化之后的结果是XML形式的。保存XML序列化是通过XmlSerializer 类来实现的 这个类位于System.Xml.Serialization命名空间下。 SOAP序列化所谓SOAP序列化是指对象序列化之后的结果符合SOAP协议也就是可以通过SOAP协议传输不知道SOAP协议百度一下吧。SOAP序列化是通过SoapFormatter类来实现的这个类位于System.Runtime.Serialization.Formatters.Soap命名空间下并且需要注意需要手动添加对这个命名空间的引用如下图所示  下面编写一个类用于序列化和反序列化这个类的代码如下 using System;   using System.Collections.Generic;   using System.Text;     namespace MySerializeDemo   {       [Serializable]       /// summary       /// 要序列化的对象       /// 作者周公       /// 编写时间2009-03-10       /// /summary       public class MyObject       {           //[NonSerialized]           private string name;           private DateTime birthday;           private string homePlace;           /// summary           /// 出生地           /// /summary           public string HomePlace           {               get { return homePlace; }               set { homePlace value; }           }               /// summary           /// 生日           /// /summary           public DateTime Birthday           {               get { return birthday; }               set { birthday value; }           }               /// summary           /// 姓名           /// /summary           public string Name           {               get { return name; }               set { name value; }           }               /// summary           /// 年龄           /// /summary           public int Age           {               get { return DateTime.Now.Year - birthday.Year; }           }           /// summary           /// override了ToString()方法           /// /summary           /// returns/returns           public override string ToString()           {               return string.Format(姓名{0},生日{1},出生地{2},年龄{3},name,birthday,homePlace,Age);           }           }   }  using System;using System.Collections.Generic;using System.Text; namespace MySerializeDemo{    [Serializable]    /// summary    /// 要序列化的对象    /// 作者周公    /// 编写时间2009-03-10    /// /summary    public class MyObject    {        //[NonSerialized]        private string name;        private DateTime birthday;        private string homePlace;        /// summary        /// 出生地        /// /summary        public string HomePlace        {            get { return homePlace; }            set { homePlace value; }        }         /// summary        /// 生日        /// /summary        public DateTime Birthday        {            get { return birthday; }            set { birthday value; }        }         /// summary        /// 姓名        /// /summary        public string Name        {            get { return name; }            set { name value; }        }         /// summary        /// 年龄        /// /summary        public int Age        {            get { return DateTime.Now.Year - birthday.Year; }        }        /// summary        /// override了ToString()方法        /// /summary        /// returns/returns        public override string ToString()        {            return string.Format(姓名{0},生日{1},出生地{2},年龄{3},name,birthday,homePlace,Age);        }     }} 下面是分别用上面的三个类进行序列化和反序列化的代码 view plaincopy to clipboardprint?using System;   using System.Collections.Generic;   using System.Text;   using System.IO;   using System.Runtime.Serialization.Formatters;   using System.Runtime.Serialization.Formatters.Binary;   using System.Runtime.Serialization.Formatters.Soap;   using System.Xml.Serialization;     namespace MySerializeDemo   {       class Program       {           static void Main(string[] args)           {               MyObject obj new MyObject();               obj.Birthday new DateTime(1979, 11, 7);               obj.HomePlace 湖北;               obj.Name 周公;               Console.WriteLine(使用BinaryFormatter类进行序列化和反序列化。);               BinarySerialize(obj);               BinaryDeserialize(C:\\MyObject.dat);               Console.WriteLine(使用SoapFormatter类进行序列化和反序列化。);               SOAPSerialize(obj);               SOAPDeserialize(C:\\MyObject.soap);               Console.WriteLine(使用XmlSerializer类进行序列化和反序列化。);               XMLSerialize(obj);               XMLDeserialize(C:\\MyObject.xml);           }           /// summary           /// 二进制序列化对象           /// /summary           /// param nameobj/param           public static void BinarySerialize(MyObject obj)           {               using (FileStream stream new FileStream(C:\\MyObject.dat, FileMode.Create, FileAccess.Write))               {                   BinaryFormatter formater new BinaryFormatter();                   formater.Serialize(stream, obj);                   Console.WriteLine(对象已经被序列化。 obj.ToString());               }           }           /// summary           /// 二进制反序列化           /// /summary           /// param namefileName/param           public static void BinaryDeserialize(string fileName)           {               using (FileStream stream new FileStream(fileName, FileMode.Open, FileAccess.Read))               {                   BinaryFormatter formater new BinaryFormatter();                   MyObject obj(MyObject)formater.Deserialize(stream);                   Console.WriteLine(对象已经被反序列化。 obj.ToString());               }           }             /// summary           /// 二进制序列化对象           /// /summary           /// param nameobj/param           public static void SOAPSerialize(MyObject obj)           {               using (FileStream stream new FileStream(C:\\MyObject.soap, FileMode.Create, FileAccess.Write))               {                   SoapFormatter formater new SoapFormatter();                   formater.Serialize(stream, obj);                   Console.WriteLine(对象已经被序列化。 obj.ToString());               }           }           /// summary           /// 二进制反序列化           /// /summary           /// param namefileName/param           public static void SOAPDeserialize(string fileName)           {               using (FileStream stream new FileStream(fileName, FileMode.Open, FileAccess.Read))               {                   SoapFormatter formater new SoapFormatter();                   MyObject obj (MyObject)formater.Deserialize(stream);                   Console.WriteLine(对象已经被反序列化。 obj.ToString());               }           }           /// summary           /// XML序列化           /// /summary           /// param nameobj/param           public static void XMLSerialize(MyObject obj)           {               using (FileStream stream new FileStream(C:\\MyObject.xml, FileMode.Create, FileAccess.Write))               {                   XmlSerializer serializer new XmlSerializer(typeof(MyObject));                   serializer.Serialize(stream, obj);                   Console.WriteLine(对象已经被序列化。 obj.ToString());               }           }           /// summary           /// XML反序列化           /// /summary           /// param namefileName/param           public static void XMLDeserialize(string fileName)           {               using (FileStream stream new FileStream(fileName, FileMode.Open, FileAccess.Read))               {                   XmlSerializer serializer new XmlSerializer(typeof(MyObject));                   MyObject obj (MyObject)serializer.Deserialize(stream);                   Console.WriteLine(对象已经被反序列化。 obj.ToString());               }           }       }   }  using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Runtime.Serialization.Formatters;using System.Runtime.Serialization.Formatters.Binary;using System.Runtime.Serialization.Formatters.Soap;using System.Xml.Serialization; namespace MySerializeDemo{    class Program    {        static void Main(string[] args)        {            MyObject obj new MyObject();            obj.Birthday new DateTime(1979, 11, 7);            obj.HomePlace 湖北;            obj.Name 周公;            Console.WriteLine(使用BinaryFormatter类进行序列化和反序列化。);            BinarySerialize(obj);            BinaryDeserialize(C:\\MyObject.dat);            Console.WriteLine(使用SoapFormatter类进行序列化和反序列化。);            SOAPSerialize(obj);            SOAPDeserialize(C:\\MyObject.soap);            Console.WriteLine(使用XmlSerializer类进行序列化和反序列化。);            XMLSerialize(obj);            XMLDeserialize(C:\\MyObject.xml);        }        /// summary        /// 二进制序列化对象        /// /summary        /// param nameobj/param        public static void BinarySerialize(MyObject obj)        {            using (FileStream stream new FileStream(C:\\MyObject.dat, FileMode.Create, FileAccess.Write))            {                BinaryFormatter formater new BinaryFormatter();                formater.Serialize(stream, obj);                Console.WriteLine(对象已经被序列化。 obj.ToString());            }        }        /// summary        /// 二进制反序列化        /// /summary        /// param namefileName/param        public static void BinaryDeserialize(string fileName)        {            using (FileStream stream new FileStream(fileName, FileMode.Open, FileAccess.Read))            {                BinaryFormatter formater new BinaryFormatter();                MyObject obj(MyObject)formater.Deserialize(stream);                Console.WriteLine(对象已经被反序列化。 obj.ToString());            }        }         /// summary        /// 二进制序列化对象        /// /summary        /// param nameobj/param        public static void SOAPSerialize(MyObject obj)        {            using (FileStream stream new FileStream(C:\\MyObject.soap, FileMode.Create, FileAccess.Write))            {                SoapFormatter formater new SoapFormatter();                formater.Serialize(stream, obj);                Console.WriteLine(对象已经被序列化。 obj.ToString());            }        }        /// summary        /// 二进制反序列化        /// /summary        /// param namefileName/param        public static void SOAPDeserialize(string fileName)        {            using (FileStream stream new FileStream(fileName, FileMode.Open, FileAccess.Read))            {                SoapFormatter formater new SoapFormatter();                MyObject obj (MyObject)formater.Deserialize(stream);                Console.WriteLine(对象已经被反序列化。 obj.ToString());            }        }        /// summary        /// XML序列化        /// /summary        /// param nameobj/param        public static void XMLSerialize(MyObject obj)        {            using (FileStream stream new FileStream(C:\\MyObject.xml, FileMode.Create, FileAccess.Write))            {                XmlSerializer serializer new XmlSerializer(typeof(MyObject));                serializer.Serialize(stream, obj);                Console.WriteLine(对象已经被序列化。 obj.ToString());            }        }        /// summary        /// XML反序列化        /// /summary        /// param namefileName/param        public static void XMLDeserialize(string fileName)        {            using (FileStream stream new FileStream(fileName, FileMode.Open, FileAccess.Read))            {                XmlSerializer serializer new XmlSerializer(typeof(MyObject));                MyObject obj (MyObject)serializer.Deserialize(stream);                Console.WriteLine(对象已经被反序列化。 obj.ToString());            }        }    }} 这个程序的运行效果如下 可见通过上面三个类都能实现将对象序列化保存并且都能反序列化还原到对象被序列化之前的状态这正是序列化意义所在能保存对象运行时的状态并且还能还原。如果运行上面的代码会在C盘根目录下创建三个文件分别是MyObject.dat、MyObject.soap和MyObject.xml文件因为MyObject.dat是二进制文件所以无法查看文件的内容但是我们可以打开MyObject.soap和MyObject.xml这两个文件来比较一下有什么区别。MyObject.soap文件的后缀虽然是.soap但是还是可以用记事本打开的下面是MyObject.soap文件的内容view plaincopy to clipboardprint?SOAP-ENV:Envelope xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:SOAP-ENChttp://schemas.xmlsoap.org/soap/encoding/ xmlns:SOAP-ENVhttp://schemas.xmlsoap.org/soap/envelope/ xmlns:clrhttp://schemas.microsoft.com/soap/encoding/clr/1.0 SOAP-ENV:encodingStylehttp://schemas.xmlsoap.org/soap/encoding/  SOAP-ENV:Body  a1:MyObject idref-1 xmlns:a1http://schemas.microsoft.com/clr/nsassem/MySerializeDemo/MySerializeDemo%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull  name idref-3周公/name  birthday1979-11-07T00:00:00.000000008:00/birthday  homePlace idref-4湖北/homePlace  /a1:MyObject  /SOAP-ENV:Body  /SOAP-ENV:Envelope  SOAP-ENV:Envelope xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:SOAP-ENChttp://schemas.xmlsoap.org/soap/encoding/ xmlns:SOAP-ENVhttp://schemas.xmlsoap.org/soap/envelope/ xmlns:clrhttp://schemas.microsoft.com/soap/encoding/clr/1.0 SOAP-ENV:encodingStylehttp://schemas.xmlsoap.org/soap/encoding/SOAP-ENV:Bodya1:MyObject idref-1 xmlns:a1http://schemas.microsoft.com/clr/nsassem/MySerializeDemo/MySerializeDemo%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnullname idref-3周公/namebirthday1979-11-07T00:00:00.000000008:00/birthdayhomePlace idref-4湖北/homePlace/a1:MyObject/SOAP-ENV:Body/SOAP-ENV:Envelope MyObject.xml文件也可以用记事本打开它的内容如下 view plaincopy to clipboardprint??xml version1.0?  MyObject xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema    HomePlace湖北/HomePlace    Birthday1979-11-07T00:00:00/Birthday    Name周公/Name  /MyObject  ?xml version1.0?MyObject xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema  HomePlace湖北/HomePlace  Birthday1979-11-07T00:00:00/Birthday  Name周公/Name/MyObject 熟悉SOAP协议的朋友一看MyObject.soap文件的内容就知道它符合SOAP协议MyObject.xml文件毫无疑问是一个符合XML规范的文件。 对代码作几点说明1、如果采用BinaryFormatter类或者SoapFormatter类来实现序列化则一定要给类加上Serializable属性如代码中所示view plaincopy to clipboardprint?[Serializable]       /// summary       /// 要序列化的对象       /// 作者周公       /// 编写时间2009-03-10       /// /summary       public class MyObject  [Serializable]    /// summary    /// 要序列化的对象    /// 作者周公    /// 编写时间2009-03-10    /// /summary    public class MyObject 如果不给要序列化的对象加上这个属性那么采用采用BinaryFormatter类或者SoapFormatter类来实现序列化时会报异常但使用XmlSerializer 类序列化对象时可以不用这个属性。2、另外如果不想序列化某个字段可以给其加上NonSerialized属性这样在序列化时就不会保存这个这个字段的值了比如不想序列化name这个字段可以如下写代码 view plaincopy to clipboardprint?…//其它代码   //[NonSerialized]   private string name;   …//其它代码  …//其它代码//[NonSerialized]private string name;…//其它代码 再次运行刚才的程序会得到如下效果 看有黄色底线部分因为name字段不被序列化所以通过二进制序列化和SOAP序列化之后再反序化就得不到原来的值了。3、最后还需要说明一点的是SoapFormatter类在.net3.5开始已经过时了微软建议使用BinaryFormatter类来序列化和反序列化了。 周公2009-03-11 0:17 本文来自CSDN博客转载请标明出处http://blog.csdn.net/zhoufoxcn/archive/2009/03/11/3978874.aspx 转载于:https://www.cnblogs.com/fightLonely/archive/2010/05/26/1744209.html
http://www.zqtcl.cn/news/630642/

相关文章:

  • 小白自己做网站商业摄影网站源码
  • 网站做外链什么意思青岛科友网站建设网络公司
  • 洛阳网站建设培训杭州seo网站排名
  • 长沙公司网站wordpress发文章后显示两篇
  • 优享购物官方网站wordpress添加数据
  • 重庆工程建设造价信息网站娱乐网站策划书
  • 南通电商网站建设网站设计制作电话多少
  • 微网站搭建流程郑州市金水区建设局官方网站
  • 手工活接单在家做有正规网站吗网站开发的职责与分工
  • 网站程序系统信阳建网站
  • 站长工具关键词排名怎么查深企在线
  • 长垣县建站塔山双喜网站被抓取
  • 如何更改网站的关键词企业商务网站有哪些
  • 太阳能建设网站运城个人网站建设
  • 网站建设 起飞最好的免费logo设计网站
  • 提供网站建设设计wordpress数据库查询很慢
  • 可以自己做漫画的网站怎么才能学网页设计
  • 能盈利的网站网站运营经验
  • 咸宁网站建设价格创建app需要什么条件
  • 一个静态网站多少钱谷歌推广公司哪家好
  • 做体育的网站c2c跨境电商平台有哪些?
  • 山西响应式网站建设推荐全国企业信用信息公示系统浙江
  • 西安做网站维护的公司百度百科官网入口
  • 网站网站建设公司贵阳网站设计阳光创信好吗
  • 网站广告投放收费标准长沙公司制作网站费用
  • 网站建设有哪些环节做一个产品网站要多少钱
  • 公司网站建设价格河北网站制作 网站开发
  • 适合新手做的网站项目职业技术培训
  • 提高网站流量原则昆山做百度网站
  • 怎样设计自己的网站长春制作门户网站的公司