抽象クラスのISerializable
アイテムのリストを含むISerializable
クラスがありますが、派生クラスの実際のオブジェクトはISerializable
ではありません。 ScheduledTasksController
を逆シリアル化しようとすると、コンストラクタが呼び出され、scheduledTasks
が正しく逆シリアル化されます。ただし、リストのアイテムはnullであり、シリアル化が正しく機能してもScheduledTask
のコンストラクタは呼び出されません。私が間違って何をすることができるかについてのアイデア?前もって感謝します。以下ISerializableリストアイテムは、BinaryFormatterで逆シリアル化されません。 C#Xamarin
コード:
[Serializable]
public class ScheduledTasksController:ISerializable
{
private List<ScheduledTask> scheduledTasks = new List<ScheduledTask>();
public ScheduledTasksController(SerializationInfo info, StreamingContext context)
{
scheduledTasks = (List<ScheduledTask>)info.GetValue("tasks", typeof(List<ScheduledTask>));
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("tasks", scheduledTasks, typeof(List<ScheduledTask>));
}
}
[Serializable]
public abstract class ScheduledTask:ISerializable
{
public ScheduledTask(SerializationInfo info, StreamingContext context)
{
//code
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
//code
}
}
[Serializable]
public class RepeatingScheduledTask : ScheduledTask
{
//code
}
[Serializable]
public class OneTimeScheduledTask : ScheduledTask
{
//code
}
「//コード」が何も見ずにアドバイスをするのは難しいです。 – mjwills