Как вызвать обобщенный метод в данном случае
У меня имеется 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. То, что вы хотите - это именно задача рефлексии, и она в данном случае - даже более надёжна.