2016-08-22 11 views
0

私がきた文字列(115周りのアイテム)にシリアル化TimeZoneInfos。 Xamarin Androidアプリケーションで逆シリアル化しようとすると、いくつかの例外が発生します。デシリアライズはXamarinのAndroidで例外につながる

System.Runtime.Serialization.SerializationException:シリアル化エラーです。 System.TimeZoneInfo.DeserializeAdjustmentRuleで

(System.Text.StringBuilder &入力)[0x0000f]で/ユーザ/ビルダー/データ/レーン/ 3540/1cf254db /ソース/モノ/ MCS /クラス/ corlib /システム/のTimeZoneInfo。/Users/builder/data/lanes/3540/1cf254db/source/mono/mcs/class/corlib/system /にあるSerialization.cs:80

at System.TimeZoneInfo.FromSerializedString(System.String source)[0x0003d] TimeZoneInfo.Serialization.cs:TimeZonesProvider.csでCore.Framework.Extension.Shared.Time.HardCodedTimeZonesProvider.DeserializeTimeZoneで47

(可能System.String X)[0x00002]: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は、AdjustmentRuleためBaseUtcOffsetDeltaです。モノの実装はこのパラメータを期待せず、上記の例外をスローします。

私は、バイナリシリアル/デシリアライゼーションのであることを修正しました。

関連する問題