Я новичок в C #, и у меня есть опыт работы с Ruby. Мне еще предстоит многому научиться, поэтому я задаю следующий вопрос:
Цель: 1)Я хотел бы создать словарь со строкой в качестве ключей и любым типом объекта, который я хочу в качестве значений. Примерно так:
Dictionary<string, T>
2) Но это еще не все. Мне также нужен «главный» словарь со строкой в качестве ключей и словарь, описанный выше как значения. Примерно так:
Dictionary<string, Dictionary<string T>>
Я хочу, чтобы это было так, чтобы я мог работать, как в примере ниже:
MasterDictionary[Dict1].Add( Thing1 )
MasterDictionary[Dict2].Add( Thing2 )
Текущий код: Я пытаюсь добиться этого с помощью следующего кода
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);
}
. Проблема: Я получаю следующие ошибки
1) Лучшее совпадение перегруженного метода для 'System.Collections.Generic.Dictionary> .Add (string, System.Collections.Generic.Dictionary)' имеет некоторые недопустимые аргументы
2) Ошибка 10 Аргумент 1: невозможно преобразовать из 'System.Collections.Generic.Dictionary>' в 'System.Collections.Generic.IDictionary'
Следующие строки подчеркнуты красным
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);
Я явно сделал что-то неправильно или даже незаконно, я просто нужно знать, что это такое и как я могу это исправить!
Я провел много самостоятельных исследований, но не нашел ничего, что могло бы мне помочь в этом. Я видел, как сделать словарь словарей, но не совсем уверен, как сказать словарю, чтобы он не заботился о типе объекта в Value.
Я знаю, что буква «T» может быть здесь полезна, но я не «На самом деле не знаю, как его использовать, поскольку он всегда сообщает мне:« Тип или имя пространства имен 'T' не может быть найдено »
Так что мне делать?
Заранее спасибо - Саша