С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 12
1

Как из ArrayList получить System.Collections.Generic.List

27.01.2010, 15:36. Показов 3657. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть следующая переменная:
System.Collections.ArrayList arrayList;
которая содержит элементы типа elemType (Type elemType = какой-то тип).

Необходимо все эти данные загнать в типизированный список System.Collections.Generic.List, т.е. примерно таким образом:

C#
1
2
3
System.Collections.Generic.List<Document> list= new System.Collections.Generic.List<Document>();
foreach(Document d in arrayList)
  list.Add(d);
где вместо Document должно быть elemType. Как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2010, 15:36
Ответы с готовыми решениями:

Определение типа объекта System.Collections.Generic
Добрый день. Может быть кто-то подскажет, как однозначно определить, какого типа объект, который...

System.Collections.IEnumerable; как его подключить?
int badhands ;//: System.Collections.IEnumerable; badhands =new int :...

No mapping exists from object type system.collections.generic.list при попытке выполнить запрос типа WHERE IN
У меня есть такой запрос: transaction = connection.BeginTransaction(); ...

Шаблон System.Collections.Generic.List со своим классом в качестве параметра
При добавлении методом .Add контейнера List, если в качестве класса у шаблона использовать...

11
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
27.01.2010, 16:46 2
C#
1
System.Collections.Generic.List<elemType> list = new List<elemType>(arrayList.Cast<elemType>());
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 12
27.01.2010, 16:55  [ТС] 3
такое компилятор не пропустит
0
118 / 119 / 20
Регистрация: 21.01.2010
Сообщений: 252
28.01.2010, 02:20 4
Видимо у Humanitis студия 2008 может там такое есть.
В вашем случае можно так.

C#
1
2
3
4
5
foreach(object b in arrayList)
{
   elemType temp = (elemType)b;
   list.Add(temp);
}
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 12
28.01.2010, 09:32  [ТС] 5
Видимо, я неправильно объяснил.
elemType - это переменная, т.е. ей присваивается какой-то тип. Этого же типа должен быть и Generic.List.
Например:
Type elemType = prop.PropertyType;
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
28.01.2010, 10:24 6
List<Type>
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 12
28.01.2010, 10:37  [ТС] 7
Это создаст List типа Type, а не того типа, который определяется в программе динамически и хранится в переменной elemType.
0
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
28.01.2010, 11:12 8
А зачем вообще это нужно?Если только во время выполнения будет известен тип.
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
28.01.2010, 11:13 9
p_evghenii,

Это создаст List типа Type, а не того типа, который определяется в программе динамически и хранится в переменной elemType.

List<object>, List<dynamic>
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 12
28.01.2010, 11:47  [ТС] 10
Где можно скачать исходный код класса XmlSerializer? Думаю, там есть то, что нужно. Ведь он как-то десериализует из XML в объекты, у которых есть свойства List.
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
28.01.2010, 12:23 11
p_evghenii,

гоогле ".NET Reflector", ".net framework source code"
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 12
29.01.2010, 09:27  [ТС] 12
Самый главный вопрос - как динамически подставить тип между скобками <>. Т.е. в List<T> вместо Т подставлять нужный тип. List<object> не подойдет, потому что List<потомок object> не является потомком List<object>. Вообще можно ли как-то через Reflection создать System.Collections.Generic.List<T> и заполнить его элементами?
Есть какие-нибудь идеи?
0
29.01.2010, 09:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2010, 09:27
Помогаю со студенческими работами здесь

Вывести список из метода. Ошибка Неявное преобразование типа "System.Collections.Generic.List<double>" в "double"
Добрый день. Есть функция в библиотеке классов, расчеты в которой приводят к получению списка: ...

Отсутствуют обобщенные коллекции в System.Collections.Generic
Не могу использовать Queue, Stack и остальные коллекции в Generic, компилятор их не видит...

Создать переменную типа System.Collections.ArrayList
мне нужно создать переменную типа System.Collections.ArrayList объектов типа отдельного класса как...

Невозможно привести Iesi.Collections.Generic.ISet<some_type> к Iesi.Collections.Generic.ISet<object>. Elma BPM
Дорова! Есть система управления бизнес-процессами Elma-BPM, и в ней скрипты пишутся на C#....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru