Type.GetMethod Method (String, array<Type[])
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Searches for the specified public method whose parameters match the specified argument types.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Function GetMethod ( _
name As String, _
types As Type() _
) As MethodInfo
public MethodInfo GetMethod(
string name,
Type[] types
)
Parameters
- name
Type: System.String
The String containing the name of the public method to get.
- types
Type: array<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.MethodInfo
A MethodInfo object representing the public method whose parameters match the specified argument types, if found; otherwise, nulla null reference (Nothing in Visual Basic).
Exceptions
Exception | Condition |
---|---|
AmbiguousMatchException | More than one method is found with the specified name and specified parameters. |
ArgumentNullException | name is nulla null reference (Nothing in Visual Basic). -or- types is nulla null reference (Nothing in Visual Basic). -or- One of the elements in types is nulla null reference (Nothing in Visual Basic). |
ArgumentException | types is multidimensional. |
Remarks
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. |
Examples
The following example finds specific overloads of MethodA, specifying a variety of argument types.
Note: |
---|
To run this example, see Building Examples That Use a Demo Method and a TextBlock Control. |
Imports System.Reflection
Imports System.Runtime.InteropServices
Class Example
' Methods to get:
Public Overloads Sub MethodA(ByVal i As Integer, ByVal l As Long)
End Sub
Public Overloads Sub MethodA(ByVal i() As Integer)
End Sub
Public Overloads Sub MethodA(ByRef r As Integer)
End Sub
' Method that takes an out parameter. Note that an Imports
' reference is needed to System.Runtime.InteropServices
' for the <OutAttribute>, which can be shortened to <Out>.
Public Overloads Sub MethodA(ByVal i As Integer, <Out()> ByRef o As Integer)
o = 100
End Sub
Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
Dim mInfo As MethodInfo
' Get MethodA(i As Integer i, l As Long)
mInfo = GetType(Example).GetMethod("MethodA", New Type() {GetType(Integer), GetType(Long)})
outputBlock.Text += String.Format("Found method: {0}", mInfo) & vbCrLf
' Get MethodA(i As Integer())
mInfo = GetType(Example).GetMethod("MethodA", New Type() {GetType(Integer())})
outputBlock.Text += String.Format("Found method: {0}", mInfo) & vbCrLf
' Get MethodA(ByRef r As Integer)
mInfo = GetType(Example).GetMethod("MethodA", New Type() {GetType(Integer).MakeByRefType})
outputBlock.Text += String.Format("Found method: {0}", mInfo) & vbCrLf
' Get MethodA(i As Integer, ByRef r As Integer)
mInfo = GetType(Example).GetMethod("MethodA", New Type() {GetType(Integer), _
GetType(Integer).MakeByRefType})
outputBlock.Text += String.Format("Found method: {0}", mInfo) & vbCrLf
End Sub
End Class
' This method produces the following output:
'
'Found method: Void MethodA(Int32, Int32)
'Found method: Void MethodA(Int32[])
'Found method: Void MethodA(Int32 ByRef)
'Found method: Void MethodA(Int32, Int32 ByRef)
using System;
using System.Reflection;
class Example
{
// Methods to get:
public void MethodA(int i, int j) { }
public 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; }
public static void Demo(System.Windows.Controls.TextBlock outputBlock)
{
MethodInfo mInfo;
// Get MethodA(int i, int i)
mInfo = typeof(Example).GetMethod("MethodA",
new Type[] { typeof(int), typeof(int) });
outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";
// Get MethodA(int[] i)
mInfo = typeof(Example).GetMethod("MethodA",
new Type[] { typeof(int[]) });
outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";
// Get MethodA(ref int r)
mInfo = typeof(Example).GetMethod("MethodA",
new Type[] { typeof(int).MakeByRefType() });
outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";
// Get MethodA(int i, out int o)
mInfo = typeof(Example).GetMethod("MethodA",
new Type[] { typeof(int), typeof(int).MakeByRefType() });
outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";
}
}
/* This method produces the following output:
Found method: Void MethodA(Int32, Int32)
Found method: Void MethodA(Int32[])
Found method: Void MethodA(Int32 ByRef)
Found method: Void MethodA(Int32, Int32 ByRef)
*/
Version Information
Silverlight
Supported in: 5, 4, 3
Silverlight for Windows Phone
Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0
XNA Framework
Supported in: Xbox 360, Windows Phone OS 7.0
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.
See Also