Coleta de dicionário aninhada no .NET
A redeDictionary<TKey, TValue>
objeto permite a atribuição de chave / valores como:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict["1"] = "foo";
dict["2"] = "bar";
mas eu não posso usar um dicionário assim:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict["F1"]["F2"]["F3"] = "foo";
dict["2"]["X"] = "bar";
Existe uma coleção no .net que me permite aninhar[]
, ou eu teria que criar o meu próprio?
Se eu tiver que criar o meu próprio, como eu faria isso?
EDITAR:
Também seria útil se eu pudesse ter implementações que esperam chaves exclusivas, da seguinte forma:
dict["F1"]["F2"]["F3"] = "foo";
dict["F1"]["F2"]["F3"] = "bar"; //result is "bar" because "foo" was overridden
e uma implementação onde uma chave pode ser usada mais de uma vez
dict["F1"]["F2"]["F3"] = "foo";
dict["F1"]["F2"]["F3"] = "bar"; //result can be "foo" and "bar"
Isso é possível?
EDIT (conforme a pergunta de Jon Skeet):
Eu quero usar a estrutura assim (como um exemplo muito grosseiro):
json["data"]["request"]["name"] = "username";
json["data"]["request"]["pass"] = "password";
resolve
{ data: { request: { name: "username", pass: "password" } } }
e igualmente haveria um equivalente para XML etc.