gpt4 book ai didi

c# - 如果我在子类中实现 ISerializable,父类是否也必须如此?

转载 作者:太空狗 更新时间:2023-10-29 19:40:16 24 4
gpt4 key购买 nike

我必须在派生类中实现 ISerializable(以执行一些自定义序列化/反序列化),但父类被标记为 [Serializable]。序列化“有效”(我可以序列化和反序列化而不会出现运行时错误)但看起来基类数据没有被保留。

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

编辑> 谢谢蒂姆。你证实了我的怀疑。问题本身更进一步。在我的例子中,基类实现了 BindingList(T),而 iteself 没有实现 ISerializable。

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

在 GetObjectDate 中info.AddValue("名称", base.Property);

除非优秀的SO社区提出更好的解决方案。

最佳答案

do I have to implement ISerializable in the base class and then call base.GetObjectData(...) in the derived class

是的。一旦您实现了 ISerializable,任何自动序列化都会被关闭。

同样,您需要在基类和派生类中实现 protected 序列化构造函数。

关于c# - 如果我在子类中实现 ISerializable,父类是否也必须如此?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com