次のように、子クラスと親クラスの両方に ISerializable を実装しました。
class CircuitElement : ISerializable
{
...
protected void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
if (info == null)
throw new ArgumentNullException("info");
info.AddValue("ID", ID);
}
}
class Bus : CircuitElement, ISerializable
{
...
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
if (info == null)
throw new ArgumentNullException("info");
((ISerializable)base).GetObjectData(info,context);
info.AddValue("Voltage", Voltage);
info.AddValue("BaseVoltage", BaseVoltage);
info.AddValue("Location", Location);
}
}
しかし、子クラスBus
では、エラーが発生していますUse of keyword base is not valid in this context
。親クラスにインターフェイスを暗黙的に実装するだけでよいことはわかっていますCircuitElement
。変換について心配する必要はありませんが、このシナリオには明示的な実装の方が適切であるという印象を受けました (ここに示す理由と同様の理由で: https://stackoverflow.com/a/143425/996592 )
変換を行う方法はありますか、またはISerializable
親クラスにインターフェイスを暗黙的に実装するのに行き詰まっていますか?