Как вызвать обобщенный метод в данном случае

У меня имеется generic метода:

public IEnumerable<T> Method1<T>()
   where T : Test // какой-то базовый класс
{ ... }

public IEnumerable<T> Method2<T>()
   where T : Test, ISomeInterface // тот же базовый класс + интерфейс
{ ... }

мне необходимо вызвать один из них в зависимости от Т, хочется написать что-то типо этого:

public IEnumerable<T> MainMethod<T>()
   where T : Test
{
    if (T is ISomeInterface) // как правильно написать этот момент?
        return Method2<T>(); 
    else 
        return Method1<T>();
}

В общем, каким образом мне вызвать второй метод, не прибегая к рефлексии?


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

Автор решения: Blackmeser
if (typeof(ISomeInterface).IsAssignableFrom(typeof(T)))
        return Method2<T>(); 
    else 
        return Method1<T>();

По-другому - никак, либо менять условие задачи и передавать в метод объект данного класса, который должен быть не null. То, что вы хотите - это именно задача рефлексии, и она в данном случае - даже более надёжна.

→ Ссылка