Type.GetMethod Method (String)

 

Searches for the public method with the specified name.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

Public Function GetMethod (
	name As String
) As MethodInfo

Parameters

name
Type: System.String

The string containing the name of the public method to get.

Return Value

Type: System.Reflection.MethodInfo

An object that represents the public method with the specified name, if found; otherwise, null.

Exception Condition
AmbiguousMatchException

More than one method is found with the specified name.

ArgumentNullException

name is null.

The search for name is case-sensitive. The search includes public static and public instance methods.

If a method is overloaded and has more than one public method, the GetMethod(String) method throws an AmbiguousMatchException exception. In the following example, an exception is thrown because there is more than one public overload of the Int32.ToString method. On the other hand, because the Person.ToString method overrides Object.ToString and therefore is not overloaded, the GetMethod(String) method is able to retrieve the MethodInfo object.

Imports System.Reflection

Public Class Person
   Public FirstName As String
   Public LastName As String

   Public Overrides Function ToString() As String
      Return (FirstName + " " + LastName).Trim()
   End Function
End Class

Module Example
   Public Sub Main()
      Dim t As Type = GetType(Person)
      RetrieveMethod(t, "ToString")

      t = GetType(Int32)
      RetrieveMethod(t, "ToString")
   End Sub

   Private Sub RetrieveMethod(t As Type, name As String)   
      Try
         Dim m As MethodInfo = t.GetMethod(name)
         If m IsNot Nothing Then
            Console.WriteLine("{0}.{1}: {2} method", m.ReflectedType.Name,
                              m.Name, If(m.IsStatic, "Static", "Instance"))    
         Else
            Console.WriteLine("{0}.ToString method not found", t.Name)
         End If   
      Catch e As AmbiguousMatchException
         Console.WriteLine("{0}.{1} has multiple public overloads.", 
                           t.Name, name)
      End Try
   End Sub
End Module
' The example displays the following output:
'       Person.ToString: Instance method
'       Int32.ToString has multiple public overloads.

You can do one of the following to retrieve a specific method:

  • Call the GetMethod(String, BindingFlags) method and specify a bindingAttr argument that uniquely identifies the method. For example, if the exception is thrown because a type has a static and an instance overload, you can specify a bindingAttr argument of BindingFlags.Instance Or BindingFlags.Instance.

  • Call an overload of the GetMethod method that includes a types parameter which defines the types of the method's parameters.

  • Call the GetMethods() method to retrieve an array containing all of the public methods belonging to a type. You can then iterate it to identify the duplicate methods named name.

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.

System_CAPS_noteNote

For generic methods, do not include the type arguments in name. For example, the C# code GetMember("MyMethod<int>") searches for a member with the text name "MyMethod<int>", rather than for a method named MyMethod that has one generic argument of type int.

The following example gets a method named MethodA.


Imports System
Imports System.Reflection

Class Program

    ' Method to get:
    Public Sub MethodA()
    End Sub


    Public Shared Sub Main(ByVal args() As String)

        ' Get MethodA()
        Dim mInfo As MethodInfo = GetType(Program).GetMethod("MethodA")
        Console.WriteLine("Found method: {0}", mInfo)

    End Sub
End Class

.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Return to top
Show: