У меня есть две общие c перегрузки метода, которые различаются количеством c параметров типа и типом аргумента
// Argument types
public class Bar<T> {}
public class Bar<T, U> {}
// Generic method overloads
private static void Foo<T> (Bar<T> b) {}
private static void Foo<T, U> (Bar<T, U> b) {}
Я предполагаю, что я могу получить информацию о методе для любого один, используя соответствующее количество параметров типа
BindingFlags Flags = BindingFlags.NonPublic | BindingFlags.Static;
// Should give Foo<int>
GetType ().GetMethod ("Foo", Flags).MakeGenericMethod (typeof(int));
// Should give Foo<int, int>
GetType ().GetMethod ("Foo", Flags | BindingFlags.Static).MakeGenericMethod (typeof(int), typeof(int));
Однако это не удается с System.Reflection.AmbiguousMatchException .
Я попытался указать такие вещи, как new Type[] {typeof (Bar<,>)}
в качестве types
аргумент для некоторых из GetMethod
перегрузок, но результат всегда был нулевым. Я знаю, что могу обойти двусмысленность, просто используя разные имена для функций, но мне интересно узнать, есть ли реальное решение для этого.
Я нахожусь. NET стандарт 2.0,. NET Ядро 2,0