Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#序列化/继承_C#_Serialization_Inheritance - Fatal编程技术网

C#序列化/继承

C#序列化/继承,c#,serialization,inheritance,C#,Serialization,Inheritance,可能重复: 序列化是可继承的吗 例如: [Serializable] class A { } class B : A { } 如果我尝试序列化/反序列化类B的实例,我会得到一个异常,表明该类未标记为可序列化。因此,问题是:序列化是可继承的吗?我只是不知道怎么做,还是每个需要序列化的类都需要显式地标记为这样?这是: 请务必注意,不能继承Serializable属性。如果从MyObject派生新类,则新类也必须用属性标记,否则无法序列化 还应标记子类以使其可序列化: [Serializable

可能重复:

序列化是可继承的吗

例如:

[Serializable]
class A
{
}

class B : A
{
}
如果我尝试序列化/反序列化类B的实例,我会得到一个异常,表明该类未标记为可序列化。因此,问题是:序列化是可继承的吗?我只是不知道怎么做,还是每个需要序列化的类都需要显式地标记为这样?

这是:

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

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

[Serializable]
class B : A  {  } 

小调;在这种情况下,该属性的
继承的
属性并不直接相关(尽管它恰好是正确的)。这是因为在元数据层,
[Serializable]
不是作为属性实现的,而是作为CLI类标志实现的(您可以在IL流中检查)。感谢您的注释,这肯定不是次要的@Marc Gravell:更改了文本并删除了属性引用。。。谢谢