注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

水滴石穿

破浪是阵风!

 
 
 

日志

 
 

序列化源码  

2007-04-05 14:45:28|  分类: 软件开发技术资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Collections;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
namespace OA.Tools
{
 /// <summary>
 /// Summary description for Serialize.
 /// </summary>

 
 public class Serialize
 {
  public Serialize()
  {
   //
   // TODO: Add constructor logic here
   //
  }
  #region XML序列化
  public static  string  EnSerialize(object Pd,string defultnamespace)//串行化 
  {
   MemoryStream ms = new MemoryStream();
   TextWriter tr = new StreamWriter(ms,System.Text.Encoding.GetEncoding("GB2312"));//将序列化后的内容写入流中
   XmlSerializer sr=new XmlSerializer(Pd.GetType(), defultnamespace);
   sr.Serialize(tr,Pd);//将对象序列化到TextWriter
   
   ms.Close();
   byte [] bt = ms.GetBuffer();
   string str=null;
   for(int i=0;i<bt.Length;i++)//将流处理为字符串
   {
    str+=Convert.ToChar(bt[i]);
   }
            return str;

//   return StrConvert.EncodeBase64(str);


 
   


  }
  public static object DeSerialize(string EnserializeStr,string AssemblyQualifiedNameOfObjectType,string Defultnamespace)//反串行化
  {

            //字符处理为流
//   string newstr = StrConvert.DecodeBase64(EnserializeStr);
   string newstr = EnserializeStr;
   char [] ch = newstr.ToCharArray();

   byte [] bt = new byte[ch.Length];
   for(int i=0;i<ch.Length;i++)
   {  
    bt[i] = (byte)ch[i];
   }
          
   MemoryStream ms = new MemoryStream(bt,0,bt.Length);
   //将流的内容反序列化
   XmlSerializer newSr=new XmlSerializer(System.Type.GetType(AssemblyQualifiedNameOfObjectType,true,true),Defultnamespace);
   object newobject = null;   
   newobject = (object)newSr.Deserialize(ms);
   return newobject;

  }
  #endregion
  #region   二进制序列化
  public static string EnSerialize(object obj)
  {
   IFormatter formatter = new BinaryFormatter();
   MemoryStream ms = new MemoryStream();
   formatter.Serialize(ms,obj);
   ms.Close();
   byte [] bt = ms.GetBuffer();
   string str=null;
   for(int i=0;i<bt.Length;i++)//将流处理为字符串
   {
    str+=Convert.ToChar(bt[i]);
   }
   return str;
  


  }
  public static object DeSerialize(string EnserializeStr)//反串行化
  {

   
   string newstr = EnserializeStr;
   char [] ch = newstr.ToCharArray();

   byte [] bt = new byte[ch.Length];
   for(int i=0;i<ch.Length;i++)
   {  
    bt[i] = (byte)ch[i];
   }
          
   MemoryStream ms = new MemoryStream(bt,0,bt.Length);
   //将流的内容反序列化
   IFormatter formatter = new BinaryFormatter();
   object newobject = null;   
   newobject = (object)formatter.Deserialize(ms);
   return newobject;

  }
  #endregion
  #region  soap序列化(xml格式)
  public static string EnSerialize(object obj)
  {
   SoapFormatter formatter = new SoapFormatter();
   MemoryStream ms = new MemoryStream();
   formatter.Serialize(ms,obj);
   ms.Close();
   byte [] bt = ms.GetBuffer();
   string str=null;
   for(int i=0;i<bt.Length;i++)//将流处理为字符串
   {
    str+=Convert.ToChar(bt[i]);
   }
   return str;
  


  }
  public static object DeSerialize(string EnserializeStr)//反串行化
  {

   
   string newstr = EnserializeStr;
   char [] ch = newstr.ToCharArray();

   byte [] bt = new byte[ch.Length];
   for(int i=0;i<ch.Length;i++)
   {  
    bt[i] = (byte)ch[i];
   }
          
   MemoryStream ms = new MemoryStream(bt,0,bt.Length);
   //将流的内容反序列化
   SoapFormatter formatter = new SoapFormatter();
   object newobject = null;   
   newobject = (object)formatter.Deserialize(ms);
   return newobject;

  }
  #endregion
 }
}

 

  评论这张
 
阅读(85)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017