Skip to content

Commit 52b4c82

Browse files
authored
feat: add Type.GetMethod(name, genericParameterCount, bindingAttr, types) overload (#94889)
1 parent 57e3b0b commit 52b4c82

File tree

5 files changed

+10
-5
lines changed

5 files changed

+10
-5
lines changed

src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Runtime/General/ReflectionCoreCallbacksImplementation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ private static RuntimeMethodInfo LookupMethodForCreateDelegate(RuntimeTypeInfo r
324324
Type? type = containingType.ToType();
325325
while (type != null)
326326
{
327-
MethodInfo? methodInfo = type.GetMethod(method, 0, bindingFlags, null, parameterTypes, null);
327+
MethodInfo? methodInfo = type.GetMethod(method, 0, bindingFlags, parameterTypes);
328328
if (methodInfo != null && methodInfo.ReturnType.Equals(invokeMethod.ReturnType))
329329
return (RuntimeMethodInfo)methodInfo; // This cast is safe since we already verified that containingType is runtime implemented.
330330

src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Runtime/MethodInfos/CustomMethodMapper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ private static void AddMethod(this Dictionary<MethodBase, CustomMethodInvokerAct
5959
}
6060
else
6161
{
62-
methodBase = declaringType.GetMethod(name, 0, bf, null, parameterTypes, null);
62+
methodBase = declaringType.GetMethod(name, 0, bf, parameterTypes);
6363
}
6464

6565
if (methodBase == null)

src/libraries/System.Private.CoreLib/src/System/Type.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,9 @@ private protected static ArgumentException CreateGetMemberWithSameMetadataDefini
342342
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)]
343343
public MethodInfo? GetMethod(string name, int genericParameterCount, Type[] types, ParameterModifier[]? modifiers) => GetMethod(name, genericParameterCount, DefaultLookup, null, types, modifiers);
344344

345+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)]
346+
public MethodInfo? GetMethod(string name, int genericParameterCount, BindingFlags bindingAttr, Type[] types) => GetMethod(name, genericParameterCount, bindingAttr, null, types, null);
347+
345348
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)]
346349
public MethodInfo? GetMethod(string name, int genericParameterCount, BindingFlags bindingAttr, Binder? binder, Type[] types, ParameterModifier[]? modifiers) => GetMethod(name, genericParameterCount, bindingAttr, binder, CallingConventions.Any, types, modifiers);
347350

src/libraries/System.Runtime/ref/System.Runtime.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6168,6 +6168,8 @@ protected Type() { }
61686168
public System.Reflection.MethodInfo? GetMethod(string name, int genericParameterCount, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, System.Reflection.CallingConventions callConvention, System.Type[] types, System.Reflection.ParameterModifier[]? modifiers) { throw null; }
61696169
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
61706170
public System.Reflection.MethodInfo? GetMethod(string name, int genericParameterCount, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, System.Type[] types, System.Reflection.ParameterModifier[]? modifiers) { throw null; }
6171+
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
6172+
public System.Reflection.MethodInfo? GetMethod(string name, int genericParameterCount, System.Reflection.BindingFlags bindingAttr, System.Type[] types) { throw null; }
61716173
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
61726174
public System.Reflection.MethodInfo? GetMethod(string name, int genericParameterCount, System.Type[] types) { throw null; }
61736175
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]

src/libraries/System.Runtime/tests/System.Runtime.Tests/System/Reflection/SignatureTypes.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public static void GetMethodWithGenericParameterCount()
6464

6565
for (int genericParameterCount = 0; genericParameterCount < 4; genericParameterCount++)
6666
{
67-
m = t.GetMethod("Moo", genericParameterCount, bf, null, args, null);
67+
m = t.GetMethod("Moo", genericParameterCount, bf, args);
6868
Assert.NotNull(m);
6969
AssertIsMarked(m, genericParameterCount);
7070

@@ -74,7 +74,7 @@ public static void GetMethodWithGenericParameterCount()
7474
AssertIsMarked(m, genericParameterCount);
7575
}
7676

77-
m = t.GetMethod("Moo", 4, bf, null, args, null);
77+
m = t.GetMethod("Moo", 4, bf, args);
7878
Assert.Null(m);
7979
}
8080

@@ -110,7 +110,7 @@ public static void GetMethodWithNegativeGenericParameterCount()
110110
Type t = typeof(TestClass1);
111111
const BindingFlags bf = BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly;
112112
Type[] args = { typeof(int) };
113-
AssertExtensions.Throws<ArgumentOutOfRangeException>("genericParameterCount", () => t.GetMethod("Moo", -1, bf, null, args, null));
113+
AssertExtensions.Throws<ArgumentOutOfRangeException>("genericParameterCount", () => t.GetMethod("Moo", -1, bf, args));
114114
}
115115

116116
[Theory]

0 commit comments

Comments
 (0)