2016-08-22 99 views
0

我已經將TimeZoneInfos序列化爲字符串(大約115項)。 當我嘗試在Xamarin Android應用程序中反序列化它們時,我得到了其中一些異常。TimeZoneInfo的反序列化導致Xamarin Android中的異常

System.Runtime.Serialization.SerializationException:序列化錯誤。

在System.TimeZoneInfo.DeserializeAdjustmentRule(System.Text.StringBuilder &輸入)[0x0000f]在/用戶/助洗劑/數據/通道/ 3540/1cf254db /源/單聲道/ MCS /類/ corlib /系統/的TimeZoneInfo。 Serialization.cs:80

at System.TimeZoneInfo.FromSerializedString(System.String source)[0x0003d] in/Users/builder/data/lanes/3540/1cf254db/source/mono/mcs/class/corlib/System/TimeZoneInfo.Serialization.cs:47

在Core.Framework.Extension.Shared.Time.HardCodedTimeZonesProvider.DeserializeTimeZone(System.String X)[0x00002]在TimeZonesProvider.cs:29

序列化時區的一個示例,不能被反序列化。

TimeZoneInfo.FromSerializedString("Venezuela Standard Time;-270;(UTC-04:30) Caracas;Venezuela Standard Time;Venezuela Daylight Time;[01:01:0001;12:31:2006;0;[1;00:00:00;1;1;];[1;00:00:00.001;1;1;];30;];"); 

我已經想通了,這個問題是與去年數量:,所以下一行正常工作:

TimeZoneInfo.FromSerializedString("Venezuela Standard Time;-270;(UTC-04:30) Caracas;Venezuela Standard Time;Venezuela Daylight Time;[01:01:0001;12:31:2006;0;[1;00:00:00;1;1;];[1;00:00:00.001;1;1;];];"); 

在桌面應用程序,反序列化工作正常。那麼,這是由於單聲道還是來自我身邊的錯誤配置?

回答

0

我看了一下資料,發現ToSerializedStringFromSerializedString的實現有所不同。

上一個數字是30,對於AdjustmentRuleBaseUtcOffsetDelta。單聲道實現不期望這個參數並引發上述異常。

我已經修復了二進制序列化/反序列化。