Type.GetMethod Method (String, Type[])
Searches for the specified public method whose parameters match the specified argument types.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Parameters
- name
- Type: System.String
The string containing the name of the public method to get.
- types
- Type: System.Type[]
An array of Type objects representing the number, order, and type of the parameters for the method to get.
-or-
An empty array of Type objects (as provided by the EmptyTypes field) to get a method that takes no parameters.
Return Value
Type: System.Reflection.MethodInfoAn object representing the public method whose parameters match the specified argument types, if found; otherwise, null.
Implements
_Type.GetMethod(String, Type[])| Exception | Condition |
|---|---|
| AmbiguousMatchException | More than one method is found with the specified name and specified parameters. |
| ArgumentNullException | name is null. -or- types is null. -or- One of the elements in types is null. |
| ArgumentException | types is multidimensional. |
The search for name is case-sensitive. The search includes public static and public instance methods.
Note |
|---|
You cannot omit parameters when looking up constructors and methods. You can only omit parameters when invoking. |
If the current T:System.Type represents a constructed generic type, this method returns the MethodInfo with the type parameters replaced by the appropriate type arguments.
If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the methods of the class constraint, or the methods of Object if there is no class constraint.
Note |
|---|
The name parameter cannot include type arguments. For example, the C# code GetMethod("MyGenericMethod<int>") searches for a method with the text name "MyGenericMethod<int>", rather than for a method named MyGenericMethod that has one generic argument of type int. Instead, use GetMethod("MyGenericMethod") with the appropriate parameter in the types array. |
The following example finds specific overloads of MethodA, specifying a variety of argument types.
Note |
|---|
The Visual C# 2005 example requires the /unsafe compiler option. |
using System; using System.Reflection; class Program { // Methods to get: public void MethodA(int i, int j) { } public void MethodA(int[] i) { } public unsafe void MethodA(int* i) { } public void MethodA(ref int r) {} // Method that takes an out parameter: public void MethodA(int i, out int o) { o = 100;} static void Main(string[] args) { MethodInfo mInfo; // Get MethodA(int i, int i) mInfo = typeof(Program).GetMethod("MethodA", new Type[] { typeof(int), typeof(int) }); Console.WriteLine("Found method: {0}", mInfo); // Get MethodA(int[] i) mInfo = typeof(Program).GetMethod("MethodA", new Type[] { typeof(int[]) }); Console.WriteLine("Found method: {0}", mInfo); // Get MethodA(int* i) mInfo = typeof(Program).GetMethod("MethodA", new Type[] { typeof(int).MakePointerType() }); Console.WriteLine("Found method: {0}", mInfo); // Get MethodA(ref int r) mInfo = typeof(Program).GetMethod("MethodA", new Type[] { typeof(int).MakeByRefType() }); Console.WriteLine("Found method: {0}", mInfo); // Get MethodA(int i, out int o) mInfo = typeof(Program).GetMethod("MethodA", new Type[] { typeof(int), typeof(int).MakeByRefType() }); Console.WriteLine("Found method: {0}", mInfo); } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note