Получение типа списка из списка с объявленным типом суперкласса - PullRequest
0 голосов
/ 09 июля 2011

У меня есть три класса (Животное, Млекопитающее и Рептилия), где Млекопитающее и Рептилия являются подклассами Животного.

У меня есть список Животных, которые я населяю только Млекопитающими или только Рептилиями.Я хочу получить тип внутри списка во время выполнения.

Использование самого списка не работает.

Type type = myList.GetType().GetProperty("Item").PropertyType;
// type -> Animal

Type type = myList.GetType().GetGenericArguments()[0];
// type -> Animal

Этот список также является свойством другого класса, давайте назовем егобиом.Биом имеет два свойства: Рептилии (Список) и Млекопитающие (Список).Могу ли я найти тип элемента по заданному экземпляру свойства коллекции?

Ответы [ 2 ]

2 голосов
/ 09 июля 2011

Получить тип элемента в списке, а не тип списка:

Type type = myList[0].GetType();
0 голосов
/ 09 июля 2011

Если вы используете .NET 4.0 и знаете тип элемента при создании списка , вы можете применить Универсальная ковариация следующим образом:

List<Animal> myList = new List<Reptile>();

Это сгенерирует соответствующий вывод, используя Reflection.

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