簡體   English   中英

在.NET 4.5中序列化繼承的屬性時出錯

[英]Error serializing inherited property in .NET 4.5

這是以下問題:

.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.5中,XmlSerializer的實現已替換為不依賴C#編譯器的實現。 盡管它提供了更好的啟動性能和穩定性,但是您可能會遇到實現之間的兼容性問題。

使用legacySerializer的配置設置在4.0機器上不起作用,因為相應的強類型Xml配置節類不包含此設置的占位符。

這兩個問題都將在以后的更新中解決。 在此之前,您可以通過在4.5中設置配置開關來解決此問題,而在4.0上則要刪除該開關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM