Kolekcja zagnieżdżonego słownika w .NET
SiećDictionary<TKey, TValue>
obiekt umożliwia przypisanie klucza / wartości w ten sposób:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict["1"] = "foo";
dict["2"] = "bar";
ale nie mogę używać słownika w ten sposób:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict["F1"]["F2"]["F3"] = "foo";
dict["2"]["X"] = "bar";
Czy istnieje kolekcja w .NET, która pozwala mi zagnieżdżać się[]
, czy musiałbym stworzyć własny?
Jeśli muszę stworzyć własny, jak bym to zrobił?
EDYTOWAĆ:
Byłoby również użyteczne, gdybym mógł mieć implementacje, które oczekują unikalnych kluczy, takich jak:
dict["F1"]["F2"]["F3"] = "foo";
dict["F1"]["F2"]["F3"] = "bar"; //result is "bar" because "foo" was overridden
oraz implementacja, w której klucz może być używany więcej niż jeden raz
dict["F1"]["F2"]["F3"] = "foo";
dict["F1"]["F2"]["F3"] = "bar"; //result can be "foo" and "bar"
czy to możliwe?
EDIT (zgodnie z pytaniem Jona Skeeta):
Chcę użyć takiej struktury (jako bardzo szorstki przykład):
json["data"]["request"]["name"] = "username";
json["data"]["request"]["pass"] = "password";
postanawia
{ data: { request: { name: "username", pass: "password" } } }
i równie dobrze byłby odpowiednik XML itp.