Jestem całkiem nowy dla C# i pochodzę z tła Ruby. Nadal mam dużo do nauczenia się i dlatego zadaję następujące pytanie:Słownik C# za pomocą TValue w innym słowniku
Cel: 1) Chciałbym utworzyć słownik z ciągiem znaków jako kluczem i dowolnym typem obiektu, który chcę jako wartości. Coś takiego:
Dictionary<string, T>
2) Ale to nie wszystko. Chcę również słownik "Master" z ciągami znaków jako kluczami i Słownikiem opisanym powyżej jako wartości. coś takiego:
Dictionary<string, Dictionary<string T>>
chcę go mieć w ten sposób, więc mogę pracować jak w poniższym przykładzie:
MasterDictionary[Dict1].Add(Thing1)
MasterDictionary[Dict2].Add(Thing2)
Aktualny Kod: Staram się to osiągnąć za pomocą następującego kodu
public List<string> DataTypes;
public Dictionary<string, Dictionary<string, object>> TempData;
public Dictionary<string, Dictionary<string, object>> GameData;
public Session()
{
// Create a list of all Data Types.
DataTypes = new List<string>();
DataTypes.Add("DataInfo");
DataTypes.Add("Maps");
DataTypes.Add("Tilesets");
// Create and populate TempData dictionary.
TempData = new Dictionary<string, Dictionary<string, object>>();
TempData.Add("DataInfo", new Dictionary<string, DataInfo>());
TempData.Add("Maps", new Dictionary<string, Map>());
TempData.Add("Tilesets", new Dictionary<string, Tileset>());
// Create GameData dictionary and copy TempData into it.
GameData = new Dictionary<string, object>(TempData);
}
problem: otrzymuję następujące błędy
1) najlepszym przeciążona metoda mecz dla 'System.Collections.Generic.Dictionary> .Add (string, System.Collections.Generic.Dictionary)' ma pewne nieprawidłowe argumenty
2) Błąd 10 Argument 1: nie można przekonwertować z „System.Collections.Generic.Dictionary>” do „System.Collections.Generic.IDictionary”
Poniższe wiersze są podkreślone na czerwono
TempData.Add("DataInfo", new Dictionary<string, DataInfo>());
TempData.Add("Maps", new Dictionary<string, Map>());
TempData.Add("Tilesets", new Dictionary<string, Tileset>());
// Create GameData dictionary and copy TempData into it.
GameData = new Dictionary<string, object>(TempData);
wyraźnie zrobił coś złego lub nawet nielegalne tutaj, tylko muszę wiedzieć, co to jest i jak mogę to naprawić!
Zrobiłem dużo badań na własną rękę, ale znalazłem nic, co mogłoby mi pomóc w tym. Widziałem, jak utworzyć słownik słowników, ale nie jestem do końca pewien, jak powiedzieć słownikowi, żeby nie dbał o typ obiektu w wartości.
wiem „T” może się przydać tutaj, ale ja naprawdę nie wiem, jak go używać, ponieważ zawsze mi mówi „typu lub obszaru nazwa«T»nie można odnaleźć”
Tak co powinienem zrobić?
góry dzięki - Sasha
Ta metoda wydaje się działać bardzo dobrze! – Sasha