首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BinaryFormatter对象图升级

BinaryFormatter对象图升级
EN

Stack Overflow用户
提问于 2011-05-10 21:06:04
回答 2查看 404关注 0票数 3

在我的对象图中,我有类似这样的东西

代码语言:javascript
复制
[Serializable]
public class Dog 
{
     string _name;
}

我有各种各样的狗的列表和狗的参考资料。

因为在软件创建之初,狗只是一种动物,所以我不需要任何基类。现在,这种需求已经出现,现在我想要

代码语言:javascript
复制
[Serializable]
public class Dog : Animal
{
    public void Bark() { }
}

[Serializable]
public class Cat : Animal
{
    public void DoTheCatStuff() { }
}

[Serializable]
public class Animal 
{
     string _name;
}

但是:当我反序列化旧的归档文件时,我没有任何狗。它们根本没有从归档文件中反序列化。

我想要的是一些如何做到这一点的建议。如果我需要新的类层次结构,并手动将对象从旧的Dog复制到新的TheDog中,这很好,但如果可能的话,我希望避免这种情况。

编辑:一些.NET专家,为什么我没有狗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-10 21:44:42

听起来您需要一个ISerializationSurrogate实现和一些SerializationBinder魔术。在旧的MSDN Magazine column中有关于这一点的非常好的讨论。

票数 1
EN

Stack Overflow用户

发布于 2011-05-10 21:12:46

这是一个有趣的问题;我的直觉是这样做的:

我会写一个升级程序,它具有旧的类格式,将其写出为新的格式,或者是一个中间格式,然后您可以理解并转换为新的类层次结构。

也许通过反序列化旧存档的二进制格式,XML序列化它,然后可能使用LinqToXml在新的层次结构中创建对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5950481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档