我正在从InProc会话切换到SQL服务器会话。目前,我的会话对象如下所示:
public class UserSession{
public string TheStrings {get;set;}
public int TheInts {get;set;}
public List<MyObjectModel> ListOfObjects {get;set;}
}
它基本上包含字符串,整数和几个对象列表。我所做的是将此对象存储在会话中,然后当我需要访问会话时,我可以编写UserSession.Strings。
现在,我正在将此转换为SQL会话,序列化正在发挥作用。我是否只需要将[serializable]属性添加到整个类中,或者我是否还需要将它添加到所有MyObjectModel的类定义中?
感谢。
答案 0 :(得分:1)
我很确定只要对象中的所有内容都是简单类型,它就会默认序列化。
将SerializableAttribute属性应用于类型以指示该属性 此类型的实例可以序列化。公共语言运行库 如果对象图中有任何类型,则抛出SerializationException 被序列化没有SerializableAttribute属性 应用
即使该类也应用SerializableAttribute属性 实现ISerializable接口来控制序列化 过程
标记为的类型中的所有公共和私有字段 除非类型,否则SerializableAttribute默认是序列化的 实现ISerializable接口以覆盖序列化 处理。默认序列化过程会排除字段 用NonSerializedAttribute属性标记。如果是一个领域 serializable类型包含指针,句柄或一些其他数据 特定于特定环境的结构,不可能 有意义地在不同的环境中重建,那么你可能会 想要将NonSerializedAttribute属性应用于该字段。