Как получить generi c MethodInfo с Type.GetMethod (имя строки, int genericParameterCount, Type [] types)? - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь получить MethodInfo указанного c метода Interlocked.CompareExchange<T>(ref T, T, T) и пробовал приведенный ниже код безрезультатно:

typeof(Interlocked).GetMethod(nameof(Interlocked.CompareExchange), 1, new Type[] { typeof(int), typeof(int), typeof(int) })

Обратите внимание, что typeof(int) - это случайный тип , Все, что мне нужно, это MethodInfo, чтобы потом я мог использовать GetGenericMethodDefinition с разными типами.

Какой массив типов мы должны передать, чтобы получить требуемый метод?

1 Ответ

0 голосов
/ 15 апреля 2020

Решение оказывается довольно простым:

Type genericType = Type.MakeGenericMethodParameter(0);
Type[] types = new Type[] { genericType.MakeByRefType(), genericType, genericType };

MethodInfo methodInfo = typeof(Interlocked).GetMethod(nameof(Interlocked.CompareExchange), 1, types);
...