我们在生产中有以下代码,它用于JSON序列化/反序列化(硬盘驱动器上文件中SomeType的序列化列表):
public sealed class Cultures : List<Culture>
{
}
要求已经发生变化,如果我们将其实现为Dictionary<string, Culture>
,我们会受益匪浅,因为我们获得了键/值功能(Culture
类具有属性ID
键入string
,它将用作键。坚持List
,我们必须手动执行此操作。
什么是最好的(或者只有,如果有的话)去文化的方式:词典,但是即使那些已经在其中序列化了文化列表的文件,仍然保持序列化工作?
答案 0 :(得分:1)
更改属性并自定义序列化以支持旧格式。如果您使用的是json.net,请使用[JonConverter]属性。
答案 1 :(得分:1)
您可以使用 LINQ 保留列表并添加转换器方法。
public sealed class Cultures : List<Culture>
{
public Dictionary<string, Culture> ToDictionary()
{
return this.ToDictionary(_=>_.Id);
}
}
答案 2 :(得分:0)
在Cultures类上实现接口IDictionary。您可以将它用作字典,但所有序列化都像以前一样工作。
答案 3 :(得分:0)
[CollectionDataContract]
public sealed class Cultures : Dictionary<string, Culture>
{
}