如果基类被标记为Serializable,那么所有子类都被标记了吗?

时间:2009-12-02 05:38:44

标签: c# serialization

我有一个完整的实体类列表,我需要进行Serializable(由于在SQL中存储会话状态,但这是另一个故事)。

我添加了[Serializable]属性,一切似乎没问题。

我的所有实体类都从同一个基类扩展而来。 如果我将基类标记为Serializable,这是否意味着所有的孩子也被标记为Serializable?

由于

2 个答案:

答案 0 :(得分:38)

不,属性不会被继承。

扩展类时,可能会添加可能无法自行序列化的功能,因此.NET框架无法为您假设扩展可序列化基类的所有内容也是可序列化的。

这就是为什么你必须单独在每个类上明确声明[Serializable]属性。

答案 1 :(得分:6)

不,每个人都必须专门标记为[Serializable]。

此外,如果您打算将对象序列化为派生类型的XML,就像它是基类型一样,您还需要一个[XmlInclude]属性。

EG:

[Serializable]
public class BaseClass : ParentClass
{
}

[Serializable]
[XmlInclude(typeof(BaseClass))]
public class ParentClass
{
}

(二进制序列化,就像用于会话的那样,不需要这个)