Мне нужно создать IList с ключами и еще один IList со значениями, взятыми из IDictionary. Как мне это сделать? Мне пришлось избегать обобщений (List‹> и Dictionary‹>), потому что типы внутри них являются определяемыми пользователем типами, неизвестными во время компиляции.
У меня есть метод, который обрабатывает DataTable и возвращает словарь. Тип ключей словаря определяется во время выполнения:
DataTable myDataTable = ....
Type dictionaryKeysType=Type.GetType("myType");
IDictionary myDictionary = ProcessDataTable (myDataTable, dictionaryKeysType);
IList keys= (IList)myDictionary.Keys;
IList values= (IList)myDictionary.Values;
Как мне это сделать? Мне пришлось избегать обобщений (List‹> и Dictionary‹>), потому что типы внутри них являются определяемыми пользователем типами, неизвестными во время компиляции. Итак, хотя метод возвращает «Словарь‹>», я не могу объявить:
Dictionary<dictionaryKeysType, int> myDictionary = ProcessDataTable (myDataTable, dictionaryKeysType)
поэтому я должен получить его как «IDictionary». Использование «var» не является решением, так как проблема возникнет позже при попытке перевести его в «Словарь».
Мой код компилируется, но вызывает исключение при преобразовании в IList. Например, если «myType» равен «uint», я получаю: (Невозможно преобразовать объект типа «KeyCollection [System.UInt32, System.Int32]» в тип «System.Collections.IList»).
Пожалуйста помоги :(
dic.Keys.ToList();
в сочетании сd.Values.ToList();
должно создать для вас два параллельных списка. - person User 12345678   schedule 13.10.2013