好吧,稍后发布了几个版本,字典中的键已从int更改为long。现在,在旧对象图的反序列化过程中,Deserialize方法使用ArgumentException中止而着名的"类型为XX的对象无法转换为类型YY"异常。
完整的例外是:
类型的对象 ' System.Collections.Generic.Dictionary`2 [System.Int32,System.Collections.Generic.List`1 [XX]]' 无法转换为类型 ' System.Collections.Generic.Dictionary`2 [System.Int64,System.Collections.Generic.List`1 [XX]]'
值得注意的是,我在发布期间使用SerializationBinder类来处理类型更改。
任何帮助如何处理此错误?
答案 0 :(得分:0)
“正确”修复(假设您没有其他遗留系统访问此数据)将所有存储数据“反序列化”为Dictionary<int,List>
对象,然后将每个元素复制到一个Dictionary<long,List>
对象,然后将Int64字典序列化回存储介质。
这样可以立即解决问题,无需更改任何代码,但可能需要大量资源,具体取决于您要处理的数据量。