c# – 使用BinaryFormatter将自动实现的属性更改为正常和反序列
发布时间:2020-12-15 05:37:07 所属栏目:百科 来源:网络整理
导读:我有一个实现像属性的对象 public String Bla {get;set;} 将实现更改为类似之后 private String _bla;public String Bla{ get { return _bla; } set { _bla = value; } } 在反序列化中,这个属性是空的. 我有来自旧实现的大量序列化数据,并希望使用新实现加载
我有一个实现像属性的对象
public String Bla {get;set;} 将实现更改为类似之后 private String _bla; public String Bla { get { return _bla; } set { _bla = value; } } 在反序列化中,这个属性是空的. 我有来自旧实现的大量序列化数据,并希望使用新实现加载它们 有没有办法,改变实现与旧的二进制文件兼容? 编辑: 有些人可能遇到同样的问题,所以这是我的hackish解决方案: 自动生成的字段的命名约定是无效的c#代码: [CompilerGenerated] private string <MyField>k__BackingField; [CompilerGenerated] public void set_MyField(string value) { this.<MyField>k__BackingField = value; } [CompilerGenerated] public string get_MyField() { return this.<MyField>k__BackingField; } 对我来说快速而肮脏的修复是在源代码中创建一个名为xMyFieldxK__BackingField的私有支持字段, 并通过替换< MyField>的所有出现来修补序列化的二进制数据.在反序列化之前使用xMyFieldx 解决方法
尝试实现ISerializable
[SecurityCritical] public virtual void GetObjectData(SerializationInfo info,StreamingContext context) { if (info == null) throw new ArgumentNullException("info"); info.AddValue("name of compiler generated field",_bla); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- objective-c – Xcode 6.4 Swift单元测试无法编译
- 【Cocos2dx】飘字特效与碰撞检测
- swift基础之实现单例模式(仿NSUserDefaults)
- c# – 通用应用程序 – 加载组合框’ItemsSource
- 从XmlNode创建Xdocument对象
- ruby-on-rails – 语法错误,意外的tIDENTIFIER,期
- flex技术-在图片上添加文字
- 在PostgreSQL数据库中安装pageinspect extension
- JBoss 系列八十六: JBoss Modules module.xml 中
- vb.net – CStr()在处理Enum类型时与.ToString进
热点阅读