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;
        }
    }

これはおそらく、基本クラスの「値」プロパティを隠そうとするために導入されました。これまでに機能した唯一の解決策は、.NET4 でシリアライズしたいことをシリアライザーに知らせることでした。しかし、これは私にとって問題です。(この構成は、ターゲット コンピュータに .NET 4.5 がインストールされている場合にのみ設定する必要があります。それ以外の場合は、例外が発生します)。

プロパティをまとめて削除できると思いますが、大規模で複雑なレガシー システムを扱っているため、どのような副作用があるのか​​わかりません。

だから私の質問は2つあります:

  1. 継承されたプロパティが .NET 4.5 シリアル化を壊すのはなぜですか?

  2. 継承されたプロパティを削除すると、どのような厄介な副作用が予想されますか?

4

1 に答える 1

1

Youssefが関連する投稿で答えたように:

4.5 では、XmlSerializer の実装が、C# コンパイラに依存しないものに置き換えられました。起動時のパフォーマンスと安定性は向上しますが、実装間の互換性の問題が発生する可能性があります。

legacySerializer を使用するための構成設定は、対応する厳密に型指定された Xml 構成セクション クラスにこの設定のプレースホルダーが含まれていないため、4.0 マシンでは機能しません。

両方の問題は、今後のアップデートで対処される予定です。それまでは、4.0 のスイッチを削除して 4.5 の構成スイッチを設定することで、問題を回避できます。

于 2013-03-14T17:58:29.763 に答える