首页 > 其他 > 详细

序列化无数据怎么办?你需要继承序列化接口,自己实现序列化

时间:2021-05-24 15:40:52      阅读:9      评论:0      收藏:0      [点我收藏+]

最近在使用devexpress的mvvm框架,当用到对继承了INotifyPropertyChanged的基类BindableBase的派生类序列化时,总是无数据,只有{},到底出了什么问题?于是反编译后看到:

[System.Runtime.Serialization.DataContract]
    public abstract class BindableBase : INotifyPropertyChanged {

自己也写了一个测试案列,果然加上这行特性,就序列化无数据了,大意是:要使其类型可序列化,类型作者必须定义序列化方式。

怎么办呢?那就手动继承序列化接口了。

如果你是要实现序列化,就继承ISerializable,实现GetObjectData即可:

public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("DeltaName", DeltaName);
            info.AddValue("Days", Days);
            info.AddValue("Status", Status);
            info.AddValue("Value", Value);
        }

如果需要反序列化,就需要实现一个私有的类构造函数:

privateData(SerializationInfo info, StreamingContext context)
        {
            DeltaName = info.GetString("DeltaName");
            Days = info.GetInt32("Days");
            Status = info.GetString("Status");
            Value= info.GetDouble("Value");
        }

当然了,不需要序列化的属性,就不要在这里加进去了。

急!还要在类上添加特性[Serializable]:

[Serializable]
    public class Data : NewBase, ISerializable

 

序列化无数据怎么办?你需要继承序列化接口,自己实现序列化

原文:https://www.cnblogs.com/kafeibuhuizui/p/14803768.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!