1

我们在生产中有以下代码,它被用于 JSON 序列化/反序列化(硬盘驱动器上文件中 SomeType 的序列化列表):

public sealed class Cultures : List<Culture>
{
}

需求已经发生了变化,如果我们像这样实现它,我们将受益匪浅,Dictionary<string, Culture>因为我们获得了键/值功能(Culture类有一个ID类型的属性,string可以用作键)。我们List必须手动执行此操作。

去 Cultures : Dictionary 的最佳(或唯一,如果有的话)方法是什么,但即使使用那些已经序列化了文化列表的文件,也要保持序列化工作?

4

4 回答 4

1

更改属性并自定义序列化以支持旧格式。如果您使用的是 json.net,请使用 [JonConverter] 属性。

于 2012-08-22T08:01:48.063 回答
1

您可以保留列表并使用LINQ添加转换器方法。

public sealed class Cultures : List<Culture>
{
  public Dictionary<string, Culture> ToDictionary()
  {
    return this.ToDictionary(_=>_.Id);
  }
}
于 2012-08-22T08:45:44.890 回答
0

在 Cultures 类上实现接口IDictionary 。您可以将其用作字典,但所有序列化都像以前一样工作。

于 2012-08-22T08:04:30.900 回答
0
[CollectionDataContract]
public sealed class Cultures : Dictionary<string, Culture>
{
}
于 2012-08-22T08:39:50.617 回答