我有一个完整的实体类列表,我需要进行Serializable(由于在SQL中存储会话状态,但这是另一个故事)。
我添加了[Serializable]属性,一切似乎没问题。
我的所有实体类都从同一个基类扩展而来。 如果我将基类标记为Serializable,这是否意味着所有的孩子也被标记为Serializable?
由于
答案 0 :(得分:38)
不,属性不会被继承。
扩展类时,可能会添加可能无法自行序列化的功能,因此.NET框架无法为您假设扩展可序列化基类的所有内容也是可序列化的。
这就是为什么你必须单独在每个类上明确声明[Serializable]
属性。
答案 1 :(得分:6)
不,每个人都必须专门标记为[Serializable]。
此外,如果您打算将对象序列化为派生类型的XML,就像它是基类型一样,您还需要一个[XmlInclude]属性。
EG:
[Serializable]
public class BaseClass : ParentClass
{
}
[Serializable]
[XmlInclude(typeof(BaseClass))]
public class ParentClass
{
}
(二进制序列化,就像用于会话的那样,不需要这个)