C#序列化/继承

zim*_*nen 6 c# inheritance serialization

可能重复:可
序列化继承

序列化是否可继承?

例:

[Serializable]
class A
{
}

class B : A
{
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试序列化/反序列化B类的实例,我会得到一个异常,说明该类未标记为可序列化.因此问题:序列化是否可继承?我只是错过了如何做,或者每个需要序列化的类是否需要明确标记为这样?

Jor*_*dão 12

不可继承:

请务必注意,不能继承Serializable属性.如果从MyObject派生新类,则新类也必须使用该属性标记,否则无法序列化.

您还应该标记子类以使其可序列化:

[Serializable]
class B : A  {  } 
Run Code Online (Sandbox Code Playgroud)

  • 小调;*在这种情况下*,此属性的`Inherited`属性不直接相关(尽管它恰好是正确的).这是因为在元数据层,`[Serializable]`不是***作为属性实现,而是作为CLI类标志(您可以在IL流中检查). (2认同)