每次反序列化该类的任何实例时,如何在C#类定义中运行代码?

每次反序列化该类的任何实例时,如何在C#类定义中运行代码?,第1张

概述我试图从ObservableCollection派生一个类,我需要在每次反序列化此类的任何实例运行一行代码.我的想法是这样做: [Serializable]public class ObservableCollection2<T> : ObservableCollection<T>, ISerializable{ public ObservableCollection2() 我试图从ObservableCollection派生一个类,我需要在每次反序列化此类的任何实例时运行一行代码.我的想法是这样做:
[Serializable]public class ObservableCollection2<T> : ObservableCollection<T>,ISerializable{    public ObservableCollection2()        : base()    { }    public ObservableCollection2(SerializationInfo info,StreamingContext context)        : base(info,context)    {        // Put additional code here.    }    voID ISerializable.GetobjectData(SerializationInfo info,StreamingContext context)    {        base.GetobjectData(info,context);    }}

但我无法访问与序列化相关的那些基本方法.我是否被迫手动重写所有序列化?

解决方法 您可以使用 OnDeserializedAttribute:“当应用于方法时,指定在反序列化对象后立即调用该方法.”请注意,该方法还需要接受 StreamingContext参数:
[Serializable]public class ObservableCollection2<T>: ObservableCollection<T>{    [OnDeserialized()]    internal voID OnDeserializedMethod(StreamingContext context)    {        this.DateDeserialized = DateTime.Now;    }}
总结

以上是内存溢出为你收集整理的每次反序列化该类的任何实例时,如何在C#类定义中运行代码?全部内容,希望文章能够帮你解决每次反序列化该类的任何实例时,如何在C#类定义中运行代码?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存