序列化与反序列化一个集合

今天是中秋假前的最后一天,分享一个前段时间做的序列化一个集合的Demo。其实在.NET或者Java里要进行序列化并不难,首先创建一个进行序列化的类如下:

SerializationHelper
publicclass SerializationHelper<T>
{
publicstatic SerializationHelper<T> Instance =new SerializationHelper<T>();
publicstring FilePath { get; set; }

public SerializationHelper(string filePath =@"C:\Product.xml")
{
this.FilePath = filePath;
}

///<summary>
/// 写入数据
///</summary>
///<typeparam name="T"></typeparam>
///<param name="objects"></param>
publicbool WriteXml(T[] objects)
{
bool result =false;
if (objects ==null|| objects.Length <1)
{
return result;
}

XmlSerializer serializer
=new XmlSerializer(typeof(T[]));
try
{
using (TextWriter tr =new StreamWriter(FilePath))
{
serializer.Serialize(tr, objects);
tr.Close();
result
=true;
}
}
catch { throw; }
return result;
}

///<summary>
/// 读取数据
///</summary>
///<returns></returns>
public T[] ReadXml()
{
List
<T> ts =null;
XmlSerializer serializer
=new XmlSerializer(typeof(List<T>));
using (TextReader tr =new StreamReader(FilePath))
{
try
{
ts
= (List<T>)serializer.Deserialize(tr);
}
catch { }
finally
{
tr.Close();
}
}
return ts ==null?null : ts.ToArray();
}
}

  然后呢,没有然后了,直接使用就OK了。这是一个范型类,调用时再声明你的类型即可。因为该类我是用来提供WCF服务的,所以呢返回类型以及参数都是数组,你可以改成集合List类型,最后一个主意事项是这里面采用C#4.0的语法,如果你没有安装.NET Framework4.0,则要进行一定的改造。

原文地址:https://www.cnblogs.com/FreeDong/p/2172555.html