[Serializable] public class FlexPaperInfo
[Serializable]public class FlexPaperInfo
指示一个类可以序列化,有什么作用? --------------------编程问答-------------------- 是MVC下面的吗?
比如用一个类描述一张合同,而这个类实例化后其中的字段保存着合同的信息,如果现在要把这个类的实例发送到另一台机器、另一个窗体或是想保存这个类以便以后再取出来用(持久化对象),可以对这个类进行序列化(序列化实际上是一个信息流),传送或保存,用的时候再反序列化重新生成这个对象
为什么您想要使用序列化?有两个最重要的原因促使对序列化的使用:一个原因是将对象的状态保持在存储媒体中,以便可以在以后重新创建精确的副本;另一个原因是通过值将对象从一个应用程序域发送到另一个应用程序域中。例如,序列化可用于在 ASP.NET 中保存会话状态并将对象复制到 Windows 窗体的剪贴板中。远程处理还可以使用序列化通过值将对象从一个应用程序域传递到另一个应用程序域中。
序列化的是对象的状态
也就是对象数据成员的值和方法是没有关系的
跨应用程序域通信时,要用到序列化 --------------------编程问答-------------------- 可将类序列化为文件保存,并可以从文件反序列化为实例
--------------------编程问答-------------------- 指示一个类可以序列化之后
/// <summary>
/// 序列化
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="value">T 对象</param>
/// <param name="filename">文件路径</param>
/// <returns>返回T对象</returns>
public bool Serialize<T>(T value, string filename)
{
try
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bs = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.FileStream stream = new System.IO.FileStream(filename, System.IO.FileMode.Create);
bs.Serialize(stream, value);
stream.Close();
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="filename">文件路径</param>
/// <returns></returns>
public T DeSerialize<T>(string filename)
{
T obj;
if (!System.IO.File.Exists(filename))
return default(T);
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bs = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.FileStream stream = new System.IO.FileStream(filename, System.IO.FileMode.Open);
obj = (T)bs.Deserialize(stream);
stream.Close();
return obj;
}
1、使用BinaryFormatter进行串行化
2、使用SoapFormatter进行串行化
3、使用XmlSerializer进行串行化
4、自定义序列化 --------------------编程问答-------------------- 我刚也要问这个问题,
沾楼主光了 --------------------编程问答-------------------- SerializableAttribute仅仅是一个标识而已,标识类是可以序列化的。即通知调用的方法,该类是可以序列化的。序列化的目的就是将内存中的对象持久化(如存储成文件)或用于传输,并且可以反序列化,及从文件重新还原对象。但有些对象是无法序列化的,如包含指针,文件句柄的对象。
当然对于我们自己编写的类是否能序列化,我们可以判断,因为我们清楚类是否包含指针等不可序列化的字段。但是.net或其它非自己开发的方法是不知道的,因此SerializableAttribute就是起到标注自己可以序列化。
另外,我们有时候也可以使用接口来标识类的属性,如我们可以定义一个没有任何成员的接口:
public inte易做图ce ISearilable {}
凡是实现了该接口的类,都可以视为是可序列化的。 --------------------编程问答--------------------
是winform下边的 --------------------编程问答-------------------- 从技术角度说,任何类都是可以序列化的,但是有些类包含了本地句柄资源,序列化后再反序列化就不能正常工作了,因此需要对某些类做限制,不允许它们被序列化,这个限制就是通过这个[Serializable]来实现的,未加[Serializable]标志的,不能被序列化。
补充:.NET技术 , C#