110,531
社区成员
发帖
与我相关
我的任务
分享
public static T GetDataFromFile<T>(T entity)
{
T t = (T)FormatterInformation.Deserialize(FS);
return t;
}
public class LocalizedTypeGetterEx : LocalizedTypeGetter
{
public override Type BindToType(string assemblyName, string typeName)
{
if (typeName.Contains("List") == true && typeName.Contains(typeof(Student).Name) == true) // 如果是泛型集合
{
return typeof(List<Student>); // 直接返回反序列化的类型
}
return base.BindToType(assemblyName, typeName);
}
}
//或者使用 XmlSerializer ,将要拷贝的对象序列化到流中,然后通过反序列化得到新的对象。
/// <summary>
/// 序列化类
/// </summary>
public class SerializLog
{
//1.使用序列化的方式完成 引用对象的 深复制 是最好的方式
//2.下面的 Clone方法,我需要使用 泛型对象 做为参数,则在 Clone后面需要带上<T>的声明,否则编译出错
public static T Clone<T>(T realObject) // T 要序列化的对象
{
using (Stream stream = new MemoryStream()) // 初始化一个 流对象
{
XmlSerializer serializer = new XmlSerializer(typeof(T)); //将要序列化的对象序列化到xml文档(Formatter)
serializer.Serialize(stream, realObject); //将序列后的对象写入到流中
stream.Seek(0, SeekOrigin.Begin);
return (T)serializer.Deserialize(stream);// 反序列化得到新的对象
}
}
}