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

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

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

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


Ответы (1 шт):

Автор решения: aepot

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

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

if (typeof(IFilter).IsAssignableFrom(typeof(T)))
{
    // ...
}
→ Ссылка