1

本番環境には次のコードがあり、JSONのシリアル化/逆シリアル化(ハードドライブ上のファイル内のSomeTypeのシリアル化されたリスト)で使用されています。

public sealed class Cultures : List<Culture>
{
}

Dictionary<string, Culture>要件は、キー/値機能を取得するよりも、実装した場合に大きなメリットが得られるように変更されました(Cultureクラスにはキーとして使用されるIDタイプのプロパティがあります)。stringとどまるにListは、これを手動で行う必要があります。

Cultures:Dictionaryに移動するための最良の(または存在する場合のみ)方法は何ですか?ただし、Culturesのリストが既にシリアル化されているファイルでもシリアル化を機能させ続けますか?

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 に答える