Проверка универсального типа

Рейтинг: 0Ответов: 1Опубликовано: 29.01.2023

Как проверить универсальный тип на соответствие другому типу? Имеется следующие:

    Filter<T> C<T>()
    {
        if(T is IFilter)
            return new Filter<T>()
    }

Проверка FilterType is IFilter не выполняется.

Ответы

▲ 3Принят

T is IFilter не прокатит, так как первым аргументом сопоставления шаблона должно быть значение, а не тип.

Здесь поможет рефлексия.

if (typeof(IFilter).IsAssignableFrom(typeof(T)))
{
    // ...
}