public static T LoadFromXml<T>(string fileName)
{
FileStream fs = null;
try
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
return (T)serializer.Deserialize(fs);
}
finally
{
if (fs != null)
{
fs.Close();
}
}
} public static void SaveToXml<T>(string fileName, T data)
{
FileStream fs = null;
try
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
serializer.Serialize(fs, data);
}
finally
{
if (fs != null)
{
fs.Close();
}
}
} public static string XmlSerialize<T>(T serialObject)
{
StringBuilder sb = new StringBuilder();
XmlSerializer ser = new XmlSerializer(typeof(T));
using (TextWriter writer = new StringWriter(sb))
{
ser.Serialize(writer, serialObject);
return writer.ToString();
}
} public static string XmlSerialize(object serialObject)
{
StringBuilder sb = new StringBuilder();
XmlSerializer ser = new XmlSerializer(serialObject.GetType());
using (TextWriter writer = new StringWriter(sb))
{
ser.Serialize(writer, serialObject);
return writer.ToString();
}
} public static T XmlDeserialize<T>(string str)
{
XmlSerializer mySerializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(str))
{
return (T)mySerializer.Deserialize(reader);
}
} public static object XmlDeserialize(string str, Type type)
{
XmlSerializer mySerializer = new XmlSerializer(type);
using (TextReader reader = new StringReader(str))
{
return mySerializer.Deserialize(reader);
}
} public static string BinarySerialize<T>(T serialObject, Encoding encoding)
{
string result = String.Empty; using (MemoryStream ms = new MemoryStream())
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, serialObject);
ms.Position = ;
result = encoding.GetString(ms.ToArray());
}
catch (Exception)
{
throw;
}
}
return result;
} public static string BinarySerialize<T>(T serialObject)
{
return BinarySerialize<T>(serialObject, Encoding.Default);
} public static string BinarySerialize(object serialObject, Encoding encoding)
{
string result = String.Empty; using (MemoryStream ms = new MemoryStream())
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, serialObject);
ms.Position = ;
result = encoding.GetString(ms.ToArray());
}
catch (Exception)
{
throw;
}
}
return result;
} public static string BinarySerialize(object serialObject)
{
return BinarySerialize(serialObject, Encoding.Default);
} public static T BinaryDeserialize<T>(string str, Encoding encoding)
{
T result = default(T);
using (MemoryStream ms = new MemoryStream())
{
try
{
BinaryFormatter formatter = new BinaryFormatter();
byte[] bytes = encoding.GetBytes(str);
ms.Write(bytes, , bytes.Length);
ms.Position = ;
result = (T)formatter.Deserialize(ms); }
catch (Exception)
{
throw;
}
}
return result;
} public static T BinaryDeserialize<T>(string str)
{
return BinaryDeserialize<T>(str, Encoding.Default);
} public static object BinaryDeserialize(string str)
{
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
byte[] bytes = Encoding.Default.GetBytes(str);
ms.Write(bytes, , bytes.Length);
ms.Position = ;
return formatter.Deserialize(ms);
}
}
}
public static string SerializeToXml(object value)
{
if (value == null)
return "";
string result = string.Empty;
if (value is string)
{
return value.ToString();
} try
{
StringBuilder sb = new StringBuilder();
XmlSerializer ser = new XmlSerializer(value.GetType());
using (TextWriter writer = new StringWriter(sb))
{
ser.Serialize(writer, value);
result = writer.ToString();
}
}
catch
{
} return result;
}


SerializationUtility的更多相关文章

  1. Thrift搭建分布式微服务(四)

      第一篇 <连接配置> 第二篇 <连接池> 第三篇 <标准通信> 第四篇 快速暴露接口 之前的文章,我们介绍了如何使用连接池管理Thrift节点,以及使用Thri ...

  2. Enterprise Library 5.0 参考源码索引

    http://www.projky.com/entlib/5.0/Microsoft/Practices/EnterpriseLibrary/Caching/BackgroundScheduler.c ...

  3. Enterprise Library 4.1 参考源码索引

    http://www.projky.com/entlib/4.1/Microsoft/Practices/EnterpriseLibrary/AppSettings/Configuration/Des ...

  4. Enterprise Library 3.1 参考源码索引

    http://www.projky.com/entlib/3.1/Microsoft/Practices/EnterpriseLibrary/AppSettings/Configuration/Des ...

  5. Enterprise Library 2.0 参考源码索引

    http://www.projky.com/entlib/2.0/Microsoft/Practices/EnterpriseLibrary/Caching/BackgroundScheduler.c ...

  6. Enterprise Library 1.1 参考源码索引

    http://www.projky.com/entlib/1.1/Microsoft/Practices/EnterpriseLibrary/Caching/BackgroundScheduler.c ...

随机推荐

  1. MySQL执行计划中key_len详解

    (1).索引字段的附加信息:可以分为变长和定长数据类型讨论,当索引字段为定长数据类型,比如char,int,datetime,需要有是否为空的标记,这个标记需要占用1个字节:对于变长数据类型,比如:v ...

  2. 如何评价微软Connect 2015?[转载]

    全部的新闻和公告在这里:News and Announcements at Connect(); //2015微博话题:Sina Visitor System根据题主的理解大致地总结一下……1. Vi ...

  3. Intellij IDEA 14的注册机

    将以下代码保存成keygen.java import java.math.BigInteger; import java.util.Date; import java.util.Random; imp ...

  4. Mac工具

    iterm2是一个替代终端和iTerm的后继项目.它支持 OS 10.5 或者更新版本.iterm2 提供更多你需要的功能和特点. Flashlight,快速且全面地显示所有「关键词」索引出的结果 参 ...

  5. Ubunbu新建的用户使用SecureCrt无法Table补全、无法高亮

    Check 两个地方: 1.  确保/etc/passwd中配置有/bin/bash (这个是用来控制补全). 2. 在~/.bashrc中配置, export TERM=linux (这个是用来控制 ...

  6. Asp.net Core WebApi 支持json/xml格式的数据返回

    Asp.net core 在做webapi项目的时候,默认是只返回json格式的数据的,如果想要开启xml数据返回,需要在startup里配置如下: public void ConfigureServ ...

  7. [原创]Android自定义View之IndicatorView,显示当前tab页所处位置的View

    概述 Android IndicatorView的灵感来源于SlidingTabView,虽然有句"不重复"造轮子在先,本着练手的目的,还是写了一个功能较为简单的类似view. 其 ...

  8. Linux流量监控工具-iftop教程

    Linux流量监控工具-iftop教程http://automationqa.com/forum.php?mod=viewthread&tid=2854&fromuid=2

  9. IT Operations(IT 运营),运维的更价值化认识

    一直想努力向别人(甚至包括从事运维的人)解释清楚什么是运维,发现很难! 6月20号,在InfoQ高效运维群里面,对运维创业做了一次激烈的讨论,很自然地,过程中不可避免的谈到运维苦逼和运维无法产品化的问 ...

  10. MVC + EF + Bootstrap 2 权限管理系统入门级(附源码)

    MVC .EF 学习有大半年了,用的还不是很熟练,正好以做这样一个简单的权限管理系统作为学习的切入点,还是非常合适的. 开发环境: VS 2013 + Git + MVC 5 + EF 6 Code ...