Использование Type.GetType (string) в IList <T> - PullRequest
2 голосов
/ 25 июня 2010

Поскольку я не могу комментировать (только опубликовать ответ) к этому сообщению , я отправлю новый вопрос.
Я следовал инструкциям из упомянутого поста, но код выдает ошибку.
Код:

Type t = Type.GetType(className);
Type listType = typeof(List<>).MakeGenericType(t);
IList list = (IList)Activator.CreateInstance(listType);

Ошибка:

Для использования универсального типа 'System.Collections.Generic.IList' требуются аргументы типа '1'

Очевидно, я не могу просто указать IList без какого-либо типа, поэтому мне интересно, как именно работает ответ из упомянутого поста.

Заранее спасибо.

Ответы [ 3 ]

9 голосов
/ 25 июня 2010

Вы можете, вам просто нужна другая директива using:

using System.Collections;

Таким образом, вы будете использовать неуниверсальный IList вместо общего IList<T>.

Я полагаю, что это дух ссылочного ответа.

1 голос
/ 25 июня 2010
Type t = Type.GetType(className);
Type listType = typeof(List<>).MakeGenericType(t);
IList list = (IList)Activator.CreateInstance(listType);

Должен сделать свое дело.

Вам придется приводить объекты при извлечении их с использованием интерфейса IList, но базовый список будет принудительно добавлять только объекты типа T в коллекцию.

0 голосов
/ 25 июня 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...