Вложенный словарь в .NET
СетьDictionary<TKey, TValue>
объект позволяет присваивать ключ / значения следующим образом:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict["1"] = "foo";
dict["2"] = "bar";
но я не могу использовать словарь так:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict["F1"]["F2"]["F3"] = "foo";
dict["2"]["X"] = "bar";
Есть ли в .NET коллекция, которая позволяет мне вкладывать[]
, или я должен был бы создать мой собственный?
Если я должен создать свой собственный, как бы я это сделал?
EDIT:
Было бы также полезно, если бы у меня могли быть реализации, которые ожидают уникальные ключи, например:
dict["F1"]["F2"]["F3"] = "foo";
dict["F1"]["F2"]["F3"] = "bar"; //result is "bar" because "foo" was overridden
и реализация, в которой ключ может использоваться более одного раза
dict["F1"]["F2"]["F3"] = "foo";
dict["F1"]["F2"]["F3"] = "bar"; //result can be "foo" and "bar"
Это возможно?
EDIT (as per Jon Skeet's question):
Я хочу использовать такую структуру (очень грубый пример):
json["data"]["request"]["name"] = "username";
json["data"]["request"]["pass"] = "password";
решает в
{ data: { request: { name: "username", pass: "password" } } }
и в равной степени был бы эквивалент для XML и т. д.