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

安能建设总公司网站打不开自己怎样建设网站

安能建设总公司网站打不开,自己怎样建设网站,wordpress 流量,全球速卖通官网首页在我们深入探时C#序列化和反序列化#xff0c;之前我们先要明白什么是序列化#xff0c;它又称串行化#xff0c;是.ET运行时环境用来支持用户定义 类型的流化的机制。序列化就是把一个对象保存到一个文件或数据库字段中去#xff0c;反序列化就是在适当的时候把这个文件再… 在我们深入探时C#序列化和反序列化之前我们先要明白什么是序列化它又称串行化是.ET运行时环境用来支持用户定义 类型的流化的机制。序列化就是把一个对象保存到一个文件或数据库字段中去反序列化就是在适当的时候把这个文件再转化 成原来的对象使用。其目的是以某种存储形成使自定义对象持久化或者将这种对像从一个地方传输到另一个地方。.ET框 架提供了两种串行化的方式 1、是使用Binary Formatteri进行串行化 2、使用Soap Formatteri进行串行化 3、使用XmlSerializeri进行串行化。 第一种方式提供了一个简单的二进制数据流以及某些附加的类型信息而第二种将数据流格式化为XL存储第三种其实和 第二种差不多也是XL的格式存储只不过比第二种的XML格式要简化很多去掉了SOAP特有的额外信息。可以使用 [Serializable]属性将类标志为可序列化的。如果某个类的元素不想被序列化1、2可以使用NonSerialized属性来标志2、 可以使用[Xmllg nore]来标志。 下面就让上我们开始深入了解C序列化和反序列化 C#序列化和反序列化1、使用BinaryFormatteri进行串行化 下面是一个可串行化的类 代码如下 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.Ul; using System.Web.Ul.WebControls; using System.Web.Ul.WebControls.WebParts; using System.Web.Ul.HtmlControls; using System.IO; using System.Runtime.Serialization.Formatters.Binary; /*summary /ClassToSerialize的摘要说明 ///summary [Serializable] public class ClassToSerialize public int id 100; public string name Name; [NonSerialized public string Sex“男 下面是串行化和反串行化的方法 代码如下 public void SerializeNow() ClassToSerialize cnew ClassToSerialize(); FileStream fileStream new FileStream(c:\\temp.dat,FileMode.Create); BinaryFormatter b new BinaryFormatter(); b.Serialize(fileStream,c); fileStream.Close(); public void DeSerializeNow() ClassToSerialize cnew ClassToSerialize(); c.SeX“kkkk; FileStream fileStream new FileStream(c:\temp.dat, FileMode.Open,FileAccess.Read,FileShare.Read); BinaryFormatter b new BinaryFormatter(); c b.Deserialize(fileStream)as ClassToSerialize; Response.Write(c.name); Response.Write(c.Sex); fileStream.Close();调用上述两个方法可以看到串行化的结果Sex属性因为被标志为NonSerialized,故其值总是为null, C#序列化和反序列化2、使用SoapFormatteri进行串行化和BinaryFomatter类似我们只需要做一下简单修改即可 a.将usingi语句中的.Formatter.Binaryi改为.Formatter.Soap; b.将所有的BinaryFormatteri替换为Soap Formatter. c.确保报存文件的扩展名为.xml 经过上面简单改动即可实现SoapFormatter的串行化这时候产生的文件就是一个ml格式的文件。 C#序列化和反序列化3、使用KmlSerializeri进行串行化 关于格式化器还有一个问题假设我们需要XL,但是不想要SO八P特有的额的外信息那么我们应该怎么办呢有两中方案 要么编写一个实现IFormatter接口的类采用的方式类似于SoapFommatter类但是没有你不需要的信息要么使用库类 XmlSerializer,这个类不使用Serializable属性但是它提供了类似的功能。 如果我们不想使用主流的串行化机制而想使用XmlSeralizer进行串行化我们需要做一下修改 a.添加System.Xml.Serialization命名空间。 b.Serializable和NoSerialized,属性将被忽略而是使用Kmllgnore属性它的行为与NoSerialized类似。 c.XmlSeralizer要求类有个默认的构造器这个条件可能已经满足了。 下面看C#序列化和反序列化示例 要序列化的类 代码如下 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.Ul; using System.Web.Ul.WebControls; using System.Web.Ul.WebControls.WebParts; using System.Web.Ul.HtmlControls; using System.Xml.Serialization; 代码如下 [Serializable] public class Person private string name; public string Name get { SPAN styleWHITE-SPACE:pre/SPANreturn name; SPAN styleWHITE-SPACE:pre/SPAN) SPAN styleWHITE-SPACE:pre/SPANset SPAN styleWHITE-SPACE:pre/SPAN{ SPAN styleWHITE-SPACE:pre/SPAN name value; SPAN styleWHITE-SPACE:pre/SPAN) public string Sex; public int Age 31; public Course[]Courses; public Person() public Person(string Name) SPAN styleWHITE-SPACE:pre/SPANname Name; SPAN styleVHITE-SPACE:pre/SPANSex“男” }代码如下: [Serializable] public class Course { public string Name; [Xmllgnore] public string Description; public Course() public Course(string name,string description) SPAN styleWHITE-SPACE:pre/SPANName name; SPAN styleWHITE-SPACE:pre/SPANDescription description; }C#序列化和反序列化方法 代码如下: public void XMLSerialize() Person c new Person(cyj); c.Courses new Course[2]; c.Courses[0]new Course(英语”“交流江具) c.Courses[1]new Course(数学”自然科学) XmlSerializer xs new XmlSerializer(typeof(Person)); Stream stream new FileStream(c:\cyj.XML,FileMode.Create,FileAccess.Write,FileShare.Read); xs.Serialize(stream,c); stream.Close(); public void XMLDeserialize() XmlSerializer xs new XmlSerializer(typeof(Person)); Stream stream new FileStream(C:\\cyj.XML,FileMode.Open,FileAccess.Read,FileShare.Read); Person p xs.Deserialize(stream)as Person; Response.Write(p.Name); Response.Write(p.Age.ToString()); Response.Write(p.Courses[0].Name); Response.Write(p.Courses[0].Description); Response.Write(p.Courses[1].Name); Response.Write(p.Courses[1].Description); stream.Close();这里Course类的Description属性值将始终为null生成的xml文档中也没有该节点如下 代码如下: xml version1.0 Person xmlns:xsi http://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema Sex男/Sex Age31 /Age Courses ×Course Name英语Name Description交流工具Description ×/Course Course Name数学Name Description自然科学Description /Course /Courses ×Namecyj /Name /PersonC#序列化和反序列化4、自定义序列化 如果你希望让用户对类进行串行化但是对数据流的组织方式不完全满意那么可以通过在自定义类中实现接口来自定义串行化行为。这个接口只有一个方法GetObjectData.这个方法用于将对类对象进行串行化所需要的数据填进SerializationInfo)对象。你使用的格式化器将构造SerializationInfo对象然后在串行化时调用GetObjectData.如果类的父类也实现了ISerializable,那么应该调用GetObjectDatal的父类实现。如果你实现了ISerializable,那么还必须提供一个具有特定原型的构造器这个构造器的参数列表必须与GetObjectData相同。这个构造器应该被声明为私有的或受保护的以防止粗心的开发人员直接使用它。示例如下 C#序列化和反序列化之实现ISerializable的类 代码如下 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.Ul; using System.Web.Ul.WebControls; using System.Web.Ul.WebControls.WebParts; using System.Web.Ul.HtmlControls; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; *lWW×summary /Employee的摘要说明 1///summary [Serializable] public class Employee:ISerializable public int Empld100; public string EmpName-刘德华 [NonSerialized] public string NoSerialString NoSerialString-Test; public Employee() SPAN style-WHITE-SPACE:pre”/SPAN∥TODO:在比处添加构造函数逻辑 SPAN style--WHITE-SPACE:pre”/SPAN∥ } private Employee(Serializationlnfo info,StreamingContext ctxt) SPAN styleWHITE-SPACE:pre/SPANEmpld (int)info.GetValue(Employeeld,typeof(int)); SPAN styleWHITE-SPACE:pre/SPANEmpName (String)info.GetValue(EmployeeName,typeof(string)); SPAN styleWHITE-SPACE:pre/SPAN//NoSerialString (String)info.GetValue(EmployeeString,typeof(string)); public void GetObjectData(Serializationlnfo info,Streaming Context ctxt) SPAN styleWHITE-SPACE:pre/SPANinfo.AddValue(Employeeld,Empld); SPAN styleWHITE-SPACE:pre/SPANinfo.AddValue(EmployeeName,EmpName); SPAN styleWHITE-SPACE:pre/SPAN//info.AddValue(EmployeeString,NoSerialString); }C#序列化和反序列化方法 代码如下: public void OtherEmployeeClassTest() Employee mp new Employee(); mp.Empld 10; mp.EmpName“邱t枫” mp.NoSerialString“你好呀 Stream steam File.Open(c:\temp3.dat,File Mode.Create); BinaryFormatter bf new BinaryFormatter(); Response.Write(Writing Employee Info:) bf.Serialize(steam,mp); steam.Close(); mp null; C#序列化和反序列化之反序列化 Stream steam2 File.Open(c:\temp3.dat,FileMode.Open); BinaryFormatter bf2 new BinaryFormatter(); Response.Write(Reading Employee Info:) Employee mp2 (Employee)bf2.Deserialize(steam2); steam2.Close(); Response.Write(mp2.Empld); Response.Write(mp2.EmpName); Response.Write(mp2.NoSerialString);这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象这种比较简单没有什么可谈的
http://www.eeditor.cn/news/120251/

相关文章:

  • 芜湖做公司网站的深圳有没有什么网站
  • 阿坝州住房和城乡建设厅网站WordPress去除官网链接
  • 做搜狗pc网站排名正规网站制作公司哪里有
  • 建设商城网站报价上海集团有限公司
  • 想要去网站做友情链接怎么发邮件深圳英文网站建设公司
  • 网站服务器建设的三种方法wordpress自动标签页
  • 东莞市住房建设局网站首页做网站必备的注意事项
  • 电子商务网站怎么做乐陵是哪个省哪个市的
  • 为什么网站经常被攻击科学小制作小发明
  • 网站评测的作用做商城网站技术要点
  • 什么网站可以做平面设计赚钱网站的音乐链接怎么做
  • 世纪城网站建设北京知名企业100强
  • 酒店类的电影网站模板网站首页设计要求
  • 五金机械东莞网站建设网站视觉设计方案
  • 邦邻网站建设网站平台建设方案书
  • 怎么登陆建设工程网站建设工程交易中心网站
  • 惠州外贸网站建设公司做网站有什么注意事项
  • 中国站长网入口wordpress 滑动主题
  • 网站建设方案的需求分析免费logo设计生成器图片
  • 做网站行业怎么样社区门户网站规范化建设
  • 网站开发创业房地产信息网新楼盘
  • 做网站安全认证做淘宝的网站有哪些
  • 网站seo外包保定网站设计
  • 网站源码修复最新新闻热点事件2024摘抄
  • 驻马店做网站的公司建一个网站需要多少钱网站怎么做的
  • 株洲做网站建设商城系统源码
  • 可以用电脑做网站主机吗自学前端怎么学
  • 专业的魔站建站系统互联网企业推广
  • 成都建材网站建设个人养老保险缴费查询
  • 网站建设和维护人员职责网站诚信认证电话销售