日期:2014-05-18 浏览次数:20960 次
namespace ObjectsLibrary { public interface ObjectSerializer { string Serialize<T>(T obj); string Serialize(Type t, object obj); T Deserialize<T>(string content); object Deserialize(Type t, string content); } public class JsonObjectSerializer : ObjectSerializer { public string Serialize<T>(T obj) { return Serialize(typeof(T), obj); } public string Serialize(Type t, object obj) { string result = string.Empty; DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, obj); result = Encoding.UTF8.GetString(ms.ToArray()); } return result; } public T Deserialize<T>(string content) { return (T)Deserialize(typeof(T), content); } public object Deserialize(Type t, string content) { object result = null; using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(content))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(t); result = serializer.ReadObject(ms); } return result; } } public class XmlObjectSerializer : ObjectSerializer { public string Serialize<T>(T obj) { return Serialize(typeof(T), obj); } public string Serialize(Type t, object obj) { StringBuilder result = new StringBuilder(); try { XmlSerializer xs = new XmlSerializer(t); xs.Serialize(new StringWriter(result), obj); } catch (Exception ex) { Console.WriteLine(ex.Message); } return result.ToString(); } public T Deserialize<T>(string content) { return (T)Deserialize(typeof(T), content); } public object Deserialize(Type t, string content) { object result = null; XmlSerializer xs = new XmlSerializer(t); result = xs.Deserialize(new StringReader(content)); return result; } } }
------解决方案--------------------
临时 写的,LZ,你看看行吗?
定义一个 路径: String path = "Person.txt";
序列化时:
//----序列化方法
public void SaveInfo()
{
//定义文件流
FileStream fs = new FileStream(Path,FileMode.Create);
//二进制方式
BinaryFormatter bf = new BinaryFormatter();
//序列化存储对象
bf.Serialize(fs,lst);
fs.Close();
}
反序列化时:
//判断文件路径是否存在
if (!File.Exists(Path))
{
return;
}
FileStream fs = new FileStream(Path, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
this.lst = bf.Deserialize(fs) as List<Person>;
fs.Close();