Подтвердить что ты не робот

Как сравнить общие типы?

У меня есть класс, который имеет некоторые свойства типа List<float>, List<int> и т.д. Теперь я запрашиваю свойства этого класса через отражение, чтобы получить список PropertyInfo.

Я хочу фильтровать типы типа List<>. Но сравнение

propertyInfo.PropertyType == typeof(List<>)

не выполняется.

Я могу обойти это, сравнивая имена, т.е. работает следующее сравнение:

propertyInfo.PropertyType.Name == typeof(List<>).Name

Я думаю, что должен быть лучший способ сравнить типы Generic. Любые подсказки?

4b9b3361

Ответ 1

Вы можете использовать:

Type type = propertyInfo.PropertyType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
{
    ...
}