0

这是一个后续问题:

.NET 4.5 中的序列化中断

我在遗留代码中有一个属性,这让我对 .NET 4.5 的序列化感到悲痛。

这是属性:

 [EditorBrowsable(EditorBrowsableState.Never), Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    private new object Value
    {
        get
        {
            return base.Value;
        }
        set
        {
            base.Value = value;
        }
    }

这可能是为了尝试隐藏基类的“Value”属性而引入的。到目前为止唯一有效的解决方案是让序列化程序知道我想在 .NET4 中序列化。但这对我来说是个问题。(只有在 traget 计算机上安装了 .NET 4.5 时才应设置此配置,否则会引发异常)。

我想我可以一起删除该属性,但是由于我正在处理一个庞大而复杂的遗留系统,我不确定可能会产生什么副作用。

所以我的问题是双重的:

  1. 为什么继承的属性会破坏 .NET 4.5 序列化?

  2. 如果我删除继承的属性,我应该期待什么讨厌的副作用?

4

1 回答 1

1

正如优素福在相关帖子中回答的那样:

在 4.5 中,XmlSerializer 的实现被替换为不依赖于 C# 编译器的实现。虽然它提供了更好的启动性能和稳定性,但您可能会遇到实现之间的兼容性问题。

使用 legacySerializer 的配置设置在 4.0 机器上不起作用,因为相应的强类型 Xml 配置节类不包含此设置的占位符。

这两个问题都将在即将到来的更新中得到解决。在此之前,您可以通过在 4.5 中设置配置开关来解决此问题,并移除 4.0 上的开关。

于 2013-03-14T17:58:29.763 回答