首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SoapFormatter版本控制问题

SoapFormatter版本控制问题
EN

Stack Overflow用户
提问于 2009-04-30 23:10:29
回答 2查看 1.1K关注 0票数 1

在我维护的应用程序(C#)中,有一些序列化的对象存储在数据库中,还有一些是在几个版本之前创建的。

现在,当应用程序尝试反序列化这些对象时,它会抛出一个异常:解析错误,没有与Xml键关联的程序集...(程序集名称和版本)

据我所知,当SoapFormatter试图反序列化对象时,它首先检查反序列化程序集是否与序列化程序集相同,如果不是,它将抛出上述错误消息。情况会是这样吗?

如果是这样的话,有没有办法将这些旧数据转换为最新版本的应用程序可读?

顺便说一句,我正在考虑编写一个具有相同程序集名称和版本的程序,以假装是序列化这些对象的同一个程序集,这是可能的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-08 22:59:47

Jordan提到的XSLT转换可能会起作用,但在我的例子中,我需要更改一些属性和节点名称,这会使转换变得相当复杂。

最后,我只是使用Regex.Replace来转换更改后的程序集名和成员名,如下所示:

代码语言:javascript
复制
newData = Regex.Replace(textData, "(" + String.Join("|", keys) + ")",
                        new MatchEvaluator(this.EvaluateReplacement));

string EvaluateReplacement(Match m)
{
    if (this.convertDict.ContainsKey(m.Value))
    {
        return this.convertDict[m.Value];
    }
    return m.Value;
}

其中this.convertDict是包含转换映射的字典对象。

票数 0
EN

Stack Overflow用户

发布于 2009-04-30 23:31:51

我还没有尝试过,但是我想知道您是否可以使用XSLT将旧版本转换为较新的“版本”结构。

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

https://stackoverflow.com/questions/809529

复制
相关文章

相似问题

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