如何使用 Type.GetMethod(string name, int genericParameterCount, Type[] types) 获取通用 MethodInfo?
How to get a generic MethodInfo with Type.GetMethod(string name, int genericParameterCount, Type[] types)?
我正在尝试获取特定方法 MethodInfo
的 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
不同的类型。
我们应该传递什么类型的数组来获取所需的方法?
事实证明解决方案非常简单:
Type genericType = Type.MakeGenericMethodParameter(0);
Type[] types = new Type[] { genericType.MakeByRefType(), genericType, genericType };
MethodInfo methodInfo = typeof(Interlocked).GetMethod(nameof(Interlocked.CompareExchange), 1, types);
我正在尝试获取特定方法 MethodInfo
的 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
不同的类型。
我们应该传递什么类型的数组来获取所需的方法?
事实证明解决方案非常简单:
Type genericType = Type.MakeGenericMethodParameter(0);
Type[] types = new Type[] { genericType.MakeByRefType(), genericType, genericType };
MethodInfo methodInfo = typeof(Interlocked).GetMethod(nameof(Interlocked.CompareExchange), 1, types);