c# - 我是否需要序列化抽象基类以使派生类可序列化

标签 c# inheritance serialization

我试图在 Session 变量中存储一个对象,我将类标记为可序列化。然而,此类派生自未序列化的抽象基类。我收到一个错误。问题是我在开发机器上没有得到任何错误,但只在我无权访问的生产和暂存区。我不需要序列化类来将对象存储到我的开发机器中的 session ,但它在暂存环境中给出了序列化错误。因此,我将该类标记为可序列化,并请求在暂存环境中进行部署。现在我再次收到序列化错误,指出基类未标记为可序列化。我是否也需要序列化基类。

public abstract class A
{
    ///Properties
}
[Serializable]
public class B:A
{
      ///Properties
}

最佳答案

是的,如异常所示:

Type 'A' in Assembly '...' is not marked as serializable

因此,要解决您的问题 - 也向类 A 添加 [Serializable]

另一方面,该属性不是继承的,因此如果您只将它添加到 A,则 B 不会被视为可序列化。

关于c# - 我是否需要序列化抽象基类以使派生类可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38193784/

相关文章:

python - 覆盖类属性但不覆盖子类中的方法

c# - Interface 是否在继承链中?

java - Java 中第一次尝试序列化很慢?

php - 使用 Json_encode 数据或序列化数据并存储在数据库中哪个更有效?

c# - 将 EF 实体映射到维护 ICollection 和延迟加载的 ViewModel

c# - 使用 LINQ 的最佳序列

c# - Winforms ComboBox SelectedItem 更改不影响 BindingSource

c# - 在 unity3D 中,为什么当触摸次数小于 0 时,Input.GetMouseButton(0) 对触摸设备起作用?

c++ - 使用具有继承性的构造函数基类和成员初始值设定项列表

java - HashSet 序列化/克隆问题