/ 派生クラスを直列化可能にするために抽象基本クラスを直列化する必要がありますか - c#、継承、直列化

派生クラスを直列化可能にするために抽象基本クラスを直列化する必要がありますか?C#、継承、直列化

Sessionにオブジェクトを保存しようとしています変数、私はクラスが直列化可能としてマークされている。ただし、このクラスは直列化されていない抽象基本クラスから派生しています。エラーが発生しました。問題は、開発用マシンではエラーが発生しないことですが、アクセスできない本番およびステージング領域でのみ発生することです。私の開発マシンではセッションへのオブジェクトを保存するためにクラスをシリアライズする必要はありませんでしたが、ステージング環境ではシリアライゼーションエラーが発生しました。基本クラスが直列化可能とマークされていないというエラーが発生しました。基本クラスも直列化する必要がありますか。

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

回答:

回答№1は2

はい、例外が示すように:

アセンブリ "..."内のタイプ "A"は、直列化可能としてマークされていません

あなたの問題を解決するために - 追加する [Serializable] クラスAにも。

一方、その属性は継承されないため、Aにのみ追加した場合、BはSerializableとして扱われません。