Geschachtelte Wörterbuchsammlung in .NET

Das NetzDictionary<TKey, TValue> Objekt erlaubt die Zuweisung von Schlüsseln / Werten wie folgt:

Dictionary<string, string> dict = new Dictionary<string, string>();
dict["1"] = "foo";
dict["2"] = "bar";

aber ich kann ein Wörterbuch nicht so verwenden:

Dictionary<string, string> dict = new Dictionary<string, string>();
dict["F1"]["F2"]["F3"] = "foo";
dict["2"]["X"] = "bar";

Gibt es eine Sammlung in .NET, mit der ich verschachteln kann?[], oder müsste ich meine eigene erstellen?

Wenn ich meine eigene erstellen muss, wie würde ich das tun?

BEARBEITEN:

Es wäre auch nützlich, wenn ich Implementierungen haben könnte, die eindeutige Schlüssel erwarten, wie zum Beispiel:

dict["F1"]["F2"]["F3"] = "foo";
dict["F1"]["F2"]["F3"] = "bar"; //result is "bar" because "foo" was overridden

und eine Implementierung, bei der ein Schlüssel mehr als einmal verwendet werden kann

dict["F1"]["F2"]["F3"] = "foo";
dict["F1"]["F2"]["F3"] = "bar"; //result can be "foo" and "bar"

Ist das möglich?

EDIT (gemäß der Frage von Jon Skeet):

Ich möchte die Struktur wie folgt verwenden (als sehr grobes Beispiel):

json["data"]["request"]["name"] = "username";
json["data"]["request"]["pass"] = "password";

beschließt zu

{ data: { request: { name: "username", pass: "password" } } }

und ebenso gäbe es ein Äquivalent für XML usw.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage