Словарь C #, использующий TValue в другом словаре

Я новичок в 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' не может быть найдено »

Так что мне делать?

Заранее спасибо - Саша

5
задан Sasha 21 June 2011 в 22:47
поделиться