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

Rus*_*ell 24 c# serialization

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

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

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

谢谢

lub*_*sko 39

不,属性不是继承的.

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

这就是为什么你必须[Serializable]单独明确地声明每个类的属性.


fyj*_*ham 6

不,每个人都必须具体标记为[Serializable].

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

例如:

[Serializable]
public class BaseClass : ParentClass
{
}

[Serializable]
[XmlInclude(typeof(BaseClass))]
public class ParentClass
{
}
Run Code Online (Sandbox Code Playgroud)

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