如果我在子类中实现ISerializable,那么父类也必须这样做吗?

Ste*_*ers 8 c# serialization

我必须在派生类中实现ISerializable(进行一些自定义序列化/反序列化),但父类被标记为[Serializable].序列化"工作"(我可以序列化和反序列化,没有运行时错误),但看起来基类数据没有被保留.

事实上我在派生类中实现GetObjectData否定了基类的序列化?如果是这样,我是否必须在基类中实现ISerializable,然后在派生类中调用base.GetObjectData(...)来保存数据,或者有比编写info.AddValue(...)更好的方法100次?

编辑>谢谢蒂姆.你证实了我的怀疑.问题本身更进了一步.在我的情况下,基类实现了BindingList(T),它自己不实现ISerializable.

在过渡期间,对于每个属性,我将尝试:在ISerializable构造函数base.Property = info.GetValue(...);

并在GetObjectDate info.AddValue("name",base.Property);

除非精彩的SO社区提出更好的解决方案.

Tim*_*son 6

我必须在基类中实现ISerializable,然后在派生类中调用base.GetObjectData(...)

是.一旦实施ISerializable,任何自动序列化都将被关闭.

同样,您需要在基类和派生类中实现受保护的序列化构造函数.