Вот пример, который довольно сложен для правильного определения:
public interface IAmGeneric<T>
{
void SoAmI<T1, T2>(T one, T1 two, T2 three);
void SoAmI<T1, T2>(T one, T2 two, T1 three);
void SoAmI<T1, T2>(T1 one, T two, T2 three);
void SoAmI<T1, T2>(T2 one, T1 two, T three);
void SoAmI<T1, T2, T3>(T2 one, T1 two, T3 three);
}
Для меня решение состоит в том, чтобы использовать GetMethods(...).Select()
и сравнить имя метода, количество параметров, типы и количество параметров типа, чтобы найтиправильный метод (в основном все, что является частью сигнатуры метода).