DynamicMethod Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Defines and represents a dynamic method that can be compiled, executed, and discarded. Discarded methods are available for garbage collection.
public ref class DynamicMethod sealed : System::Reflection::MethodInfo
public sealed class DynamicMethod : System.Reflection.MethodInfo
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DynamicMethod : System.Reflection.MethodInfo
type DynamicMethod = class
inherit MethodInfo
[<System.Runtime.InteropServices.ComVisible(true)>]
type DynamicMethod = class
inherit MethodInfo
Public NotInheritable Class DynamicMethod
Inherits MethodInfo
- Inheritance
- Attributes
Examples
The following code example creates a dynamic method that takes two parameters. The example emits a simple function body that prints the first parameter to the console, and the example uses the second parameter as the return value of the method. The example completes the method by creating a delegate, invokes the delegate with different parameters, and finally invokes the dynamic method using the Invoke method.
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Globalization;
// Declare a delegate type that can be used to execute the completed
// dynamic method.
private delegate int HelloDelegate(String^ msg, int ret);
void main()
{
// Create an array that specifies the types of the parameters
// of the dynamic method. This dynamic method has a String
// parameter and an Integer parameter.
array<Type^>^ helloArgs = { String::typeid, int::typeid };
// Create a dynamic method with the name "Hello", a return type
// of Integer, and two parameters whose types are specified by
// the array helloArgs. Create the method in the module that
// defines the String class.
DynamicMethod^ hello = gcnew DynamicMethod("Hello",
int::typeid,
helloArgs,
String::typeid->Module);
// Create an array that specifies the parameter types of the
// overload of Console::WriteLine to be used in Hello.
array<Type^>^ writeStringArgs = { String::typeid };
// Get the overload of Console::WriteLine that has one
// String parameter.
MethodInfo^ writeString = Console::typeid->GetMethod("WriteLine",
writeStringArgs);
// Get an ILGenerator and emit a body for the dynamic method,
// using a stream size larger than the IL that will be
// emitted.
ILGenerator^ il = hello->GetILGenerator(256);
// Load the first argument, which is a string, onto the stack.
il->Emit(OpCodes::Ldarg_0);
// Call the overload of Console::WriteLine that prints a string.
il->EmitCall(OpCodes::Call, writeString, nullptr);
// The Hello method returns the value of the second argument;
// to do this, load the onto the stack and return.
il->Emit(OpCodes::Ldarg_1);
il->Emit(OpCodes::Ret);
// Add parameter information to the dynamic method. (This is not
// necessary, but can be useful for debugging.) For each parameter,
// identified by position, supply the parameter attributes and a
// parameter name.
hello->DefineParameter(1, ParameterAttributes::In, "message");
hello->DefineParameter(2, ParameterAttributes::In, "valueToReturn");
// Create a delegate that represents the dynamic method. This
// action completes the method. Any further attempts to
// change the method are ignored.
HelloDelegate^ hi =
(HelloDelegate^) hello->CreateDelegate(HelloDelegate::typeid);
// Use the delegate to execute the dynamic method.
Console::WriteLine("\r\nUse the delegate to execute the dynamic method:");
int retval = hi("\r\nHello, World!", 42);
Console::WriteLine("Invoking delegate hi(\"Hello, World!\", 42) returned: " + retval);
// Execute it again, with different arguments.
retval = hi("\r\nHi, Mom!", 5280);
Console::WriteLine("Invoking delegate hi(\"Hi, Mom!\", 5280) returned: " + retval);
Console::WriteLine("\r\nUse the Invoke method to execute the dynamic method:");
// Create an array of arguments to use with the Invoke method.
array<Object^>^ invokeArgs = { "\r\nHello, World!", 42 };
// Invoke the dynamic method using the arguments. This is much
// slower than using the delegate, because you must create an
// array to contain the arguments, and value-type arguments
// must be boxed.
Object^ objRet = hello->Invoke(nullptr, BindingFlags::ExactBinding, nullptr, invokeArgs, gcnew CultureInfo("en-us"));
Console::WriteLine("hello.Invoke returned: " + objRet);
Console::WriteLine("\r\n ----- Display information about the dynamic method -----");
// Display MethodAttributes for the dynamic method, set when
// the dynamic method was created.
Console::WriteLine("\r\nMethod Attributes: {0}", hello->Attributes);
// Display the calling convention of the dynamic method, set when the
// dynamic method was created.
Console::WriteLine("\r\nCalling convention: {0}", hello->CallingConvention);
// Display the declaring type, which is always null for dynamic
// methods.
if (hello->DeclaringType == nullptr)
{
Console::WriteLine("\r\nDeclaringType is always null for dynamic methods.");
}
else
{
Console::WriteLine("DeclaringType: {0}", hello->DeclaringType);
}
// Display the default value for InitLocals.
if (hello->InitLocals)
{
Console::Write("\r\nThis method contains verifiable code.");
}
else
{
Console::Write("\r\nThis method contains unverifiable code.");
}
Console::WriteLine(" (InitLocals = {0})", hello->InitLocals);
// Display the module specified when the dynamic method was created.
Console::WriteLine("\r\nModule: {0}", hello->Module);
// Display the name specified when the dynamic method was created.
// Note that the name can be blank.
Console::WriteLine("\r\nName: {0}", hello->Name);
// For dynamic methods, the reflected type is always null.
if (hello->ReflectedType == nullptr)
{
Console::WriteLine("\r\nReflectedType is null.");
}
else
{
Console::WriteLine("\r\nReflectedType: {0}", hello->ReflectedType);
}
if (hello->ReturnParameter == nullptr)
{
Console::WriteLine("\r\nMethod has no return parameter.");
}
else
{
Console::WriteLine("\r\nReturn parameter: {0}", hello->ReturnParameter);
}
// If the method has no return type, ReturnType is System.Void.
Console::WriteLine("\r\nReturn type: {0}", hello->ReturnType);
// ReturnTypeCustomAttributes returns an ICustomeAttributeProvider
// that can be used to enumerate the custom attributes of the
// return value. At present, there is no way to set such custom
// attributes, so the list is empty.
if (hello->ReturnType == Void::typeid)
{
Console::WriteLine("The method has no return type.");
}
else
{
ICustomAttributeProvider^ caProvider = hello->ReturnTypeCustomAttributes;
array<Object^>^ returnAttributes = caProvider->GetCustomAttributes(true);
if (returnAttributes->Length == 0)
{
Console::WriteLine("\r\nThe return type has no custom attributes.");
}
else
{
Console::WriteLine("\r\nThe return type has the following custom attributes:");
for each (Object^ attr in returnAttributes)
{
Console::WriteLine("\t{0}", attr->ToString());
}
}
}
Console::WriteLine("\r\nToString: {0}", hello->ToString());
// Display parameter information.
array<ParameterInfo^>^ parameters = hello->GetParameters();
Console::WriteLine("\r\nParameters: name, type, ParameterAttributes");
for each (ParameterInfo^ p in parameters)
{
Console::WriteLine("\t{0}, {1}, {2}",
p->Name, p->ParameterType, p->Attributes);
}
}
/* This code example produces the following output:
Use the delegate to execute the dynamic method:
Hello, World!
Invoking delegate hi("Hello, World!", 42) returned: 42
Hi, Mom!
Invoking delegate hi("Hi, Mom!", 5280) returned: 5280
Use the Invoke method to execute the dynamic method:
Hello, World!
hello.Invoke returned: 42
----- Display information about the dynamic method -----
Method Attributes: PrivateScope, Public, Static
Calling convention: Standard
DeclaringType is always null for dynamic methods.
This method contains verifiable code. (InitLocals = True)
Module: CommonLanguageRuntimeLibrary
Name: Hello
ReflectedType is null.
Method has no return parameter.
Return type: System.Int32
The return type has no custom attributes.
ToString: Int32 Hello(System.String, Int32)
Parameters: name, type, ParameterAttributes
message, System.String, In
valueToReturn, System.Int32, In
*/
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Globalization;
public class Test
{
// Declare a delegate type that can be used to execute the completed
// dynamic method.
private delegate int HelloDelegate(string msg, int ret);
public static void Main()
{
// Create an array that specifies the types of the parameters
// of the dynamic method. This dynamic method has a String
// parameter and an Integer parameter.
Type[] helloArgs = {typeof(string), typeof(int)};
// Create a dynamic method with the name "Hello", a return type
// of Integer, and two parameters whose types are specified by
// the array helloArgs. Create the method in the module that
// defines the String class.
DynamicMethod hello = new DynamicMethod("Hello",
typeof(int),
helloArgs,
typeof(string).Module);
// Create an array that specifies the parameter types of the
// overload of Console.WriteLine to be used in Hello.
Type[] writeStringArgs = {typeof(string)};
// Get the overload of Console.WriteLine that has one
// String parameter.
MethodInfo writeString = typeof(Console).GetMethod("WriteLine",
writeStringArgs);
// Get an ILGenerator and emit a body for the dynamic method,
// using a stream size larger than the IL that will be
// emitted.
ILGenerator il = hello.GetILGenerator(256);
// Load the first argument, which is a string, onto the stack.
il.Emit(OpCodes.Ldarg_0);
// Call the overload of Console.WriteLine that prints a string.
il.EmitCall(OpCodes.Call, writeString, null);
// The Hello method returns the value of the second argument;
// to do this, load the onto the stack and return.
il.Emit(OpCodes.Ldarg_1);
il.Emit(OpCodes.Ret);
// Add parameter information to the dynamic method. (This is not
// necessary, but can be useful for debugging.) For each parameter,
// identified by position, supply the parameter attributes and a
// parameter name.
hello.DefineParameter(1, ParameterAttributes.In, "message");
hello.DefineParameter(2, ParameterAttributes.In, "valueToReturn");
// Create a delegate that represents the dynamic method. This
// action completes the method. Any further attempts to
// change the method are ignored.
HelloDelegate hi =
(HelloDelegate) hello.CreateDelegate(typeof(HelloDelegate));
// Use the delegate to execute the dynamic method.
Console.WriteLine("\r\nUse the delegate to execute the dynamic method:");
int retval = hi("\r\nHello, World!", 42);
Console.WriteLine("Invoking delegate hi(\"Hello, World!\", 42) returned: " + retval);
// Execute it again, with different arguments.
retval = hi("\r\nHi, Mom!", 5280);
Console.WriteLine("Invoking delegate hi(\"Hi, Mom!\", 5280) returned: " + retval);
Console.WriteLine("\r\nUse the Invoke method to execute the dynamic method:");
// Create an array of arguments to use with the Invoke method.
object[] invokeArgs = {"\r\nHello, World!", 42};
// Invoke the dynamic method using the arguments. This is much
// slower than using the delegate, because you must create an
// array to contain the arguments, and value-type arguments
// must be boxed.
object objRet = hello.Invoke(null, BindingFlags.ExactBinding, null, invokeArgs, new CultureInfo("en-us"));
Console.WriteLine("hello.Invoke returned: " + objRet);
Console.WriteLine("\r\n ----- Display information about the dynamic method -----");
// Display MethodAttributes for the dynamic method, set when
// the dynamic method was created.
Console.WriteLine("\r\nMethod Attributes: {0}", hello.Attributes);
// Display the calling convention of the dynamic method, set when the
// dynamic method was created.
Console.WriteLine("\r\nCalling convention: {0}", hello.CallingConvention);
// Display the declaring type, which is always null for dynamic
// methods.
if (hello.DeclaringType == null)
{
Console.WriteLine("\r\nDeclaringType is always null for dynamic methods.");
}
else
{
Console.WriteLine("DeclaringType: {0}", hello.DeclaringType);
}
// Display the default value for InitLocals.
if (hello.InitLocals)
{
Console.Write("\r\nThis method contains verifiable code.");
}
else
{
Console.Write("\r\nThis method contains unverifiable code.");
}
Console.WriteLine(" (InitLocals = {0})", hello.InitLocals);
// Display the module specified when the dynamic method was created.
Console.WriteLine("\r\nModule: {0}", hello.Module);
// Display the name specified when the dynamic method was created.
// Note that the name can be blank.
Console.WriteLine("\r\nName: {0}", hello.Name);
// For dynamic methods, the reflected type is always null.
if (hello.ReflectedType == null)
{
Console.WriteLine("\r\nReflectedType is null.");
}
else
{
Console.WriteLine("\r\nReflectedType: {0}", hello.ReflectedType);
}
if (hello.ReturnParameter == null)
{
Console.WriteLine("\r\nMethod has no return parameter.");
}
else
{
Console.WriteLine("\r\nReturn parameter: {0}", hello.ReturnParameter);
}
// If the method has no return type, ReturnType is System.Void.
Console.WriteLine("\r\nReturn type: {0}", hello.ReturnType);
// ReturnTypeCustomAttributes returns an ICustomeAttributeProvider
// that can be used to enumerate the custom attributes of the
// return value. At present, there is no way to set such custom
// attributes, so the list is empty.
if (hello.ReturnType == typeof(void))
{
Console.WriteLine("The method has no return type.");
}
else
{
ICustomAttributeProvider caProvider = hello.ReturnTypeCustomAttributes;
object[] returnAttributes = caProvider.GetCustomAttributes(true);
if (returnAttributes.Length == 0)
{
Console.WriteLine("\r\nThe return type has no custom attributes.");
}
else
{
Console.WriteLine("\r\nThe return type has the following custom attributes:");
foreach( object attr in returnAttributes )
{
Console.WriteLine("\t{0}", attr.ToString());
}
}
}
Console.WriteLine("\r\nToString: {0}", hello.ToString());
// Display parameter information.
ParameterInfo[] parameters = hello.GetParameters();
Console.WriteLine("\r\nParameters: name, type, ParameterAttributes");
foreach( ParameterInfo p in parameters )
{
Console.WriteLine("\t{0}, {1}, {2}",
p.Name, p.ParameterType, p.Attributes);
}
}
}
/* This code example produces the following output:
Use the delegate to execute the dynamic method:
Hello, World!
Invoking delegate hi("Hello, World!", 42) returned: 42
Hi, Mom!
Invoking delegate hi("Hi, Mom!", 5280) returned: 5280
Use the Invoke method to execute the dynamic method:
Hello, World!
hello.Invoke returned: 42
----- Display information about the dynamic method -----
Method Attributes: PrivateScope, Public, Static
Calling convention: Standard
DeclaringType is always null for dynamic methods.
This method contains verifiable code. (InitLocals = True)
Module: CommonLanguageRuntimeLibrary
Name: Hello
ReflectedType is null.
Method has no return parameter.
Return type: System.Int32
The return type has no custom attributes.
ToString: Int32 Hello(System.String, Int32)
Parameters: name, type, ParameterAttributes
message, System.String, In
valueToReturn, System.Int32, In
*/
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Globalization
Public Class Test
' Declare a delegate type that can be used to execute the completed
' dynamic method.
Private Delegate Function HelloDelegate(ByVal msg As String, _
ByVal ret As Integer) As Integer
Public Shared Sub Main()
' Create an array that specifies the types of the parameters
' of the dynamic method. This dynamic method has a String
' parameter and an Integer parameter.
Dim helloArgs() As Type = {GetType(String), GetType(Integer)}
' Create a dynamic method with the name "Hello", a return type
' of Integer, and two parameters whose types are specified by
' the array helloArgs. Create the method in the module that
' defines the String class.
Dim hello As New DynamicMethod("Hello", _
GetType(Integer), _
helloArgs, _
GetType(String).Module)
' Create an array that specifies the parameter types of the
' overload of Console.WriteLine to be used in Hello.
Dim writeStringArgs() As Type = {GetType(String)}
' Get the overload of Console.WriteLine that has one
' String parameter.
Dim writeString As MethodInfo = GetType(Console). _
GetMethod("WriteLine", writeStringArgs)
' Get an ILGenerator and emit a body for the dynamic method,
' using a stream size larger than the IL that will be
' emitted.
Dim il As ILGenerator = hello.GetILGenerator(256)
' Load the first argument, which is a string, onto the stack.
il.Emit(OpCodes.Ldarg_0)
' Call the overload of Console.WriteLine that prints a string.
il.EmitCall(OpCodes.Call, writeString, Nothing)
' The Hello method returns the value of the second argument;
' to do this, load the onto the stack and return.
il.Emit(OpCodes.Ldarg_1)
il.Emit(OpCodes.Ret)
' Add parameter information to the dynamic method. (This is not
' necessary, but can be useful for debugging.) For each parameter,
' identified by position, supply the parameter attributes and a
' parameter name.
hello.DefineParameter(1, ParameterAttributes.In, "message")
hello.DefineParameter(2, ParameterAttributes.In, "valueToReturn")
' Create a delegate that represents the dynamic method. This
' action completes the method. Any further attempts to
' change the method are ignored.
Dim hi As HelloDelegate = _
CType(hello.CreateDelegate(GetType(HelloDelegate)), HelloDelegate)
' Use the delegate to execute the dynamic method.
Console.WriteLine(vbCrLf & "Use the delegate to execute the dynamic method:")
Dim retval As Integer = hi(vbCrLf & "Hello, World!", 42)
Console.WriteLine("Invoking delegate hi(""Hello, World!"", 42) returned: " _
& retval & ".")
' Execute it again, with different arguments.
retval = hi(vbCrLf & "Hi, Mom!", 5280)
Console.WriteLine("Invoking delegate hi(""Hi, Mom!"", 5280) returned: " _
& retval & ".")
Console.WriteLine(vbCrLf & "Use the Invoke method to execute the dynamic method:")
' Create an array of arguments to use with the Invoke method.
Dim invokeArgs() As Object = {vbCrLf & "Hello, World!", 42}
' Invoke the dynamic method using the arguments. This is much
' slower than using the delegate, because you must create an
' array to contain the arguments, and value-type arguments
' must be boxed.
Dim objRet As Object = hello.Invoke(Nothing, _
BindingFlags.ExactBinding, Nothing, invokeArgs, _
New CultureInfo("en-us"))
Console.WriteLine("hello.Invoke returned: {0}", objRet)
Console.WriteLine(vbCrLf & _
" ----- Display information about the dynamic method -----")
' Display MethodAttributes for the dynamic method, set when
' the dynamic method was created.
Console.WriteLine(vbCrLf & "Method Attributes: {0}", _
hello.Attributes)
' Display the calling convention of the dynamic method, set when the
' dynamic method was created.
Console.WriteLine(vbCrLf & "Calling convention: {0}", _
hello.CallingConvention)
' Display the declaring type, which is always Nothing for dynamic
' methods.
If hello.DeclaringType Is Nothing Then
Console.WriteLine(vbCrLf & "DeclaringType is always Nothing for dynamic methods.")
Else
Console.WriteLine("DeclaringType: {0}", hello.DeclaringType)
End If
' Display the default value for InitLocals.
If hello.InitLocals Then
Console.Write(vbCrLf & "This method contains verifiable code.")
Else
Console.Write(vbCrLf & "This method contains unverifiable code.")
End If
Console.WriteLine(" (InitLocals = {0})", hello.InitLocals)
' Display the module specified when the dynamic method was created.
Console.WriteLine(vbCrLf & "Module: {0}", hello.Module)
' Display the name specified when the dynamic method was created.
' Note that the name can be blank.
Console.WriteLine(vbCrLf & "Name: {0}", hello.Name)
' For dynamic methods, the reflected type is always Nothing.
If hello.ReflectedType Is Nothing Then
Console.WriteLine(vbCrLf & "ReflectedType is Nothing.")
Else
Console.WriteLine(vbCrLf & "ReflectedType: {0}", _
hello.ReflectedType)
End If
If hello.ReturnParameter Is Nothing Then
Console.WriteLine(vbCrLf & "Method has no return parameter.")
Else
Console.WriteLine(vbCrLf & "Return parameter: {0}", _
hello.ReturnParameter)
End If
' If the method has no return type, ReturnType is System.Void.
Console.WriteLine(vbCrLf & "Return type: {0}", hello.ReturnType)
' ReturnTypeCustomAttributes returns an ICustomeAttributeProvider
' that can be used to enumerate the custom attributes of the
' return value. At present, there is no way to set such custom
' attributes, so the list is empty.
If hello.ReturnType Is GetType(System.Void) Then
Console.WriteLine("The method has no return type.")
Else
Dim caProvider As ICustomAttributeProvider = _
hello.ReturnTypeCustomAttributes
Dim returnAttributes() As Object = _
caProvider.GetCustomAttributes(True)
If returnAttributes.Length = 0 Then
Console.WriteLine(vbCrLf _
& "The return type has no custom attributes.")
Else
Console.WriteLine(vbCrLf _
& "The return type has the following custom attributes:")
For Each attr As Object In returnAttributes
Console.WriteLine(vbTab & attr.ToString())
Next attr
End If
End If
Console.WriteLine(vbCrLf & "ToString: " & hello.ToString())
' Display parameter information.
Dim parameters() As ParameterInfo = hello.GetParameters()
Console.WriteLine(vbCrLf & "Parameters: name, type, ParameterAttributes")
For Each p As ParameterInfo In parameters
Console.WriteLine(vbTab & "{0}, {1}, {2}", _
p.Name, p.ParameterType, p.Attributes)
Next p
End Sub
End Class
' This code example produces the following output:
'
'Use the delegate to execute the dynamic method:
'
'Hello, World!
'Invoking delegate hi("Hello, World!", 42) returned: 42.
'
'Hi, Mom!
'Invoking delegate hi("Hi, Mom!", 5280) returned: 5280.
'
'Use the Invoke method to execute the dynamic method:
'
'Hello, World!
'hello.Invoke returned: 42
'
' ----- Display information about the dynamic method -----
'
'Method Attributes: PrivateScope, Public, Static
'
'Calling convention: Standard
'
'DeclaringType is always Nothing for dynamic methods.
'
'This method contains verifiable code. (InitLocals = True)
'
'Module: CommonLanguageRuntimeLibrary
'
'Name: Hello
'
'ReflectedType is Nothing.
'
'Method has no return parameter.
'
'Return type: System.Int32
'
'The return type has no custom attributes.
'
'ToString: Int32 Hello(System.String, Int32)
'
'Parameters: name, type, ParameterAttributes
' message, System.String, In
' valueToReturn, System.Int32, In
Remarks
For more information about this API, see Supplemental API remarks for DynamicMethod.
Constructors
DynamicMethod(String, MethodAttributes, CallingConventions, Type, Type[], Module, Boolean) |
Creates a dynamic method that is global to a module, specifying the method name, attributes, calling convention, return type, parameter types, module, and whether just-in-time (JIT) visibility checks should be skipped for types and members accessed by the Microsoft intermediate language (MSIL) of the dynamic method. |
DynamicMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type, Boolean) |
Creates a dynamic method, specifying the method name, attributes, calling convention, return type, parameter types, the type with which the dynamic method is logically associated, and whether just-in-time (JIT) visibility checks should be skipped for types and members accessed by the Microsoft intermediate language (MSIL) of the dynamic method. |
DynamicMethod(String, Type, Type[]) |
Initializes an anonymously hosted dynamic method, specifying the method name, return type, and parameter types. |
DynamicMethod(String, Type, Type[], Boolean) |
Initializes an anonymously hosted dynamic method, specifying the method name, return type, parameter types, and whether just-in-time (JIT) visibility checks should be skipped for types and members accessed by the Microsoft intermediate language (MSIL) of the dynamic method. |
DynamicMethod(String, Type, Type[], Module) |
Creates a dynamic method that is global to a module, specifying the method name, return type, parameter types, and module. |
DynamicMethod(String, Type, Type[], Module, Boolean) |
Creates a dynamic method that is global to a module, specifying the method name, return type, parameter types, module, and whether just-in-time (JIT) visibility checks should be skipped for types and members accessed by the Microsoft intermediate language (MSIL) of the dynamic method. |
DynamicMethod(String, Type, Type[], Type) |
Creates a dynamic method, specifying the method name, return type, parameter types, and the type with which the dynamic method is logically associated. |
DynamicMethod(String, Type, Type[], Type, Boolean) |
Creates a dynamic method, specifying the method name, return type, parameter types, the type with which the dynamic method is logically associated, and whether just-in-time (JIT) visibility checks should be skipped for types and members accessed by the Microsoft intermediate language (MSIL) of the dynamic method. |
Properties
Attributes |
Gets the attributes specified when the dynamic method was created. |
CallingConvention |
Gets the calling convention specified when the dynamic method was created. |
ContainsGenericParameters |
Gets a value that indicates whether a generic method contains unassigned generic type parameters. (Inherited from MethodInfo) |
CustomAttributes |
Gets a collection that contains this member's custom attributes. (Inherited from MemberInfo) |
DeclaringType |
Gets the type that declares the method, which is always |
InitLocals |
Gets or sets a value indicating whether the local variables in the method are zero-initialized. |
IsAbstract |
Gets a value indicating whether the method is abstract. (Inherited from MethodBase) |
IsAssembly |
Gets a value indicating whether the potential visibility of this method or constructor is described by Assembly; that is, the method or constructor is visible at most to other types in the same assembly, and is not visible to derived types outside the assembly. (Inherited from MethodBase) |
IsCollectible |
Gets a value that indicates whether this MemberInfo object is part of an assembly held in a collectible AssemblyLoadContext. (Inherited from MemberInfo) |
IsConstructedGenericMethod | (Inherited from MethodBase) |
IsConstructor |
Gets a value indicating whether the method is a constructor. (Inherited from MethodBase) |
IsFamily |
Gets a value indicating whether the visibility of this method or constructor is described by Family; that is, the method or constructor is visible only within its class and derived classes. (Inherited from MethodBase) |
IsFamilyAndAssembly |
Gets a value indicating whether the visibility of this method or constructor is described by FamANDAssem; that is, the method or constructor can be called by derived classes, but only if they are in the same assembly. (Inherited from MethodBase) |
IsFamilyOrAssembly |
Gets a value indicating whether the potential visibility of this method or constructor is described by FamORAssem; that is, the method or constructor can be called by derived classes wherever they are, and by classes in the same assembly. (Inherited from MethodBase) |
IsFinal |
Gets a value indicating whether this method is |
IsGenericMethod |
Gets a value indicating whether the current method is a generic method. (Inherited from MethodInfo) |
IsGenericMethodDefinition |
Gets a value indicating whether the current MethodInfo represents the definition of a generic method. (Inherited from MethodInfo) |
IsHideBySig |
Gets a value indicating whether only a member of the same kind with exactly the same signature is hidden in the derived class. (Inherited from MethodBase) |
IsPrivate |
Gets a value indicating whether this member is private. (Inherited from MethodBase) |
IsPublic |
Gets a value indicating whether this is a public method. (Inherited from MethodBase) |
IsSecurityCritical |
Gets a value that indicates whether the current dynamic method is security-critical or security-safe-critical, and therefore can perform critical operations. |
IsSecurityCritical |
Gets a value that indicates whether the current method or constructor is security-critical or security-safe-critical at the current trust level, and therefore can perform critical operations. (Inherited from MethodBase) |
IsSecuritySafeCritical |
Gets a value that indicates whether the current dynamic method is security-safe-critical at the current trust level; that is, whether it can perform critical operations and can be accessed by transparent code. |
IsSecuritySafeCritical |
Gets a value that indicates whether the current method or constructor is security-safe-critical at the current trust level; that is, whether it can perform critical operations and can be accessed by transparent code. (Inherited from MethodBase) |
IsSecurityTransparent |
Gets a value that indicates whether the current dynamic method is transparent at the current trust level, and therefore cannot perform critical operations. |
IsSecurityTransparent |
Gets a value that indicates whether the current method or constructor is transparent at the current trust level, and therefore cannot perform critical operations. (Inherited from MethodBase) |
IsSpecialName |
Gets a value indicating whether this method has a special name. (Inherited from MethodBase) |
IsStatic |
Gets a value indicating whether the method is |
IsVirtual |
Gets a value indicating whether the method is |
MemberType |
Gets a MemberTypes value indicating that this member is a method. (Inherited from MethodInfo) |
MetadataToken |
Gets a value that identifies a metadata element. (Inherited from MemberInfo) |
MethodHandle |
Not supported for dynamic methods. |
MethodHandle |
Gets a handle to the internal metadata representation of a method. (Inherited from MethodBase) |
MethodImplementationFlags | |
MethodImplementationFlags |
Gets the MethodImplAttributes flags that specify the attributes of a method implementation. (Inherited from MethodBase) |
Module |
Gets the module with which the dynamic method is logically associated. |
Module |
Gets the module in which the type that declares the member represented by the current MemberInfo is defined. (Inherited from MemberInfo) |
Name |
Gets the name of the dynamic method. |
ReflectedType |
Gets the class that was used in reflection to obtain the method. |
ReflectedType |
Gets the class object that was used to obtain this instance of |
ReturnParameter |
Gets the return parameter of the dynamic method. |
ReturnType |
Gets the type of return value for the dynamic method. |
ReturnTypeCustomAttributes |
Gets the custom attributes of the return type for the dynamic method. |
ReturnTypeCustomAttributes |
Gets the custom attributes for the return type. (Inherited from MethodInfo) |
Methods
CreateDelegate(Type) |
Completes the dynamic method and creates a delegate that can be used to execute it. |
CreateDelegate(Type, Object) |
Completes the dynamic method and creates a delegate that can be used to execute it, specifying the delegate type and an object the delegate is bound to. |
CreateDelegate<T>() |
Creates a delegate of type |
CreateDelegate<T>(Object) |
Creates a delegate of type |
DefineParameter(Int32, ParameterAttributes, String) |
Defines a parameter of the dynamic method. |
Equals(Object) |
Returns a value that indicates whether this instance is equal to a specified object. (Inherited from MethodInfo) |
GetBaseDefinition() |
Returns the base implementation for the method. |
GetBaseDefinition() |
When overridden in a derived class, returns the MethodInfo object for the method on the direct or indirect base class in which the method represented by this instance was first declared. (Inherited from MethodInfo) |
GetCustomAttributes(Boolean) |
Returns all the custom attributes defined for the method. |
GetCustomAttributes(Boolean) |
When overridden in a derived class, returns an array of all custom attributes applied to this member. (Inherited from MemberInfo) |
GetCustomAttributes(Type, Boolean) |
Returns the custom attributes of the specified type that have been applied to the method. |
GetCustomAttributes(Type, Boolean) |
When overridden in a derived class, returns an array of custom attributes applied to this member and identified by Type. (Inherited from MemberInfo) |
GetCustomAttributesData() |
Returns a list of CustomAttributeData objects representing data about the attributes that have been applied to the target member. (Inherited from MemberInfo) |
GetDynamicILInfo() |
Returns a DynamicILInfo object that can be used to generate a method body from metadata tokens, scopes, and Microsoft intermediate language (MSIL) streams. |
GetGenericArguments() |
Returns an array of Type objects that represent the type arguments of a generic method or the type parameters of a generic method definition. (Inherited from MethodInfo) |
GetGenericMethodDefinition() |
Returns a MethodInfo object that represents a generic method definition from which the current method can be constructed. (Inherited from MethodInfo) |
GetHashCode() |
Returns the hash code for this instance. (Inherited from MethodInfo) |
GetILGenerator() |
Returns a Microsoft intermediate language (MSIL) generator for the method with a default MSIL stream size of 64 bytes. |
GetILGenerator(Int32) |
Returns a Microsoft intermediate language (MSIL) generator for the method with the specified MSIL stream size. |
GetMethodBody() |
When overridden in a derived class, gets a MethodBody object that provides access to the MSIL stream, local variables, and exceptions for the current method. (Inherited from MethodBase) |
GetMethodImplementationFlags() |
Returns the implementation flags for the method. |
GetMethodImplementationFlags() |
When overridden in a derived class, returns the MethodImplAttributes flags. (Inherited from MethodBase) |
GetParameters() |
Returns the parameters of the dynamic method. |
GetType() |
Discovers the attributes of a method and provides access to method metadata. (Inherited from MethodInfo) |
HasSameMetadataDefinitionAs(MemberInfo) | (Inherited from MemberInfo) |
Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) |
Invokes the dynamic method using the specified parameters, under the constraints of the specified binder, with the specified culture information. |
Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) |
When overridden in a derived class, invokes the reflected method or constructor with the given parameters. (Inherited from MethodBase) |
Invoke(Object, Object[]) |
Invokes the method or constructor represented by the current instance, using the specified parameters. (Inherited from MethodInfo) |
IsDefined(Type, Boolean) |
Indicates whether the specified custom attribute type is defined. |
IsDefined(Type, Boolean) |
When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member. (Inherited from MemberInfo) |
MakeGenericMethod(Type[]) |
Substitutes the elements of an array of types for the type parameters of the current generic method definition, and returns a MethodInfo object representing the resulting constructed method. (Inherited from MethodInfo) |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
ToString() |
Returns the signature of the method, represented as a string. |
Explicit Interface Implementations
_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Maps a set of names to a corresponding set of dispatch identifiers. (Inherited from MemberInfo) |
_MemberInfo.GetType() |
Gets a Type object representing the MemberInfo class. (Inherited from MemberInfo) |
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Retrieves the type information for an object, which can then be used to get the type information for an interface. (Inherited from MemberInfo) |
_MemberInfo.GetTypeInfoCount(UInt32) |
Retrieves the number of type information interfaces that an object provides (either 0 or 1). (Inherited from MemberInfo) |
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Provides access to properties and methods exposed by an object. (Inherited from MemberInfo) |
_MethodBase.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Maps a set of names to a corresponding set of dispatch identifiers. (Inherited from MethodBase) |
_MethodBase.GetType() |
For a description of this member, see GetType(). (Inherited from MethodBase) |
_MethodBase.GetTypeInfo(UInt32, UInt32, IntPtr) |
Retrieves the type information for an object, which can then be used to get the type information for an interface. (Inherited from MethodBase) |
_MethodBase.GetTypeInfoCount(UInt32) |
Retrieves the number of type information interfaces that an object provides (either 0 or 1). (Inherited from MethodBase) |
_MethodBase.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Provides access to properties and methods exposed by an object. (Inherited from MethodBase) |
_MethodBase.IsAbstract |
For a description of this member, see IsAbstract. (Inherited from MethodBase) |
_MethodBase.IsAssembly |
For a description of this member, see IsAssembly. (Inherited from MethodBase) |
_MethodBase.IsConstructor |
For a description of this member, see IsConstructor. (Inherited from MethodBase) |
_MethodBase.IsFamily |
For a description of this member, see IsFamily. (Inherited from MethodBase) |
_MethodBase.IsFamilyAndAssembly |
For a description of this member, see IsFamilyAndAssembly. (Inherited from MethodBase) |
_MethodBase.IsFamilyOrAssembly |
For a description of this member, see IsFamilyOrAssembly. (Inherited from MethodBase) |
_MethodBase.IsFinal |
For a description of this member, see IsFinal. (Inherited from MethodBase) |
_MethodBase.IsHideBySig |
For a description of this member, see IsHideBySig. (Inherited from MethodBase) |
_MethodBase.IsPrivate |
For a description of this member, see IsPrivate. (Inherited from MethodBase) |
_MethodBase.IsPublic |
For a description of this member, see IsPublic. (Inherited from MethodBase) |
_MethodBase.IsSpecialName |
For a description of this member, see IsSpecialName. (Inherited from MethodBase) |
_MethodBase.IsStatic |
For a description of this member, see IsStatic. (Inherited from MethodBase) |
_MethodBase.IsVirtual |
For a description of this member, see IsVirtual. (Inherited from MethodBase) |
_MethodInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Maps a set of names to a corresponding set of dispatch identifiers. (Inherited from MethodInfo) |
_MethodInfo.GetType() |
Provides access to the GetType() method from COM. (Inherited from MethodInfo) |
_MethodInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Retrieves the type information for an object, which can be used to get the type information for an interface. (Inherited from MethodInfo) |
_MethodInfo.GetTypeInfoCount(UInt32) |
Retrieves the number of type information interfaces that an object provides (either 0 or 1). (Inherited from MethodInfo) |
_MethodInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Provides access to properties and methods exposed by an object. (Inherited from MethodInfo) |
ICustomAttributeProvider.GetCustomAttributes(Boolean) |
Returns an array of all of the custom attributes defined on this member, excluding named attributes, or an empty array if there are no custom attributes. (Inherited from MemberInfo) |
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean) |
Returns an array of custom attributes defined on this member, identified by type, or an empty array if there are no custom attributes of that type. (Inherited from MemberInfo) |
ICustomAttributeProvider.IsDefined(Type, Boolean) |
Indicates whether one or more instance of |
Extension Methods
GetCustomAttribute(MemberInfo, Type) |
Retrieves a custom attribute of a specified type that is applied to a specified member. |
GetCustomAttribute(MemberInfo, Type, Boolean) |
Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member. |
GetCustomAttribute<T>(MemberInfo) |
Retrieves a custom attribute of a specified type that is applied to a specified member. |
GetCustomAttribute<T>(MemberInfo, Boolean) |
Retrieves a custom attribute of a specified type that is applied to a specified member, and optionally inspects the ancestors of that member. |
GetCustomAttributes(MemberInfo) |
Retrieves a collection of custom attributes that are applied to a specified member. |
GetCustomAttributes(MemberInfo, Boolean) |
Retrieves a collection of custom attributes that are applied to a specified member, and optionally inspects the ancestors of that member. |
GetCustomAttributes(MemberInfo, Type) |
Retrieves a collection of custom attributes of a specified type that are applied to a specified member. |
GetCustomAttributes(MemberInfo, Type, Boolean) |
Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member. |
GetCustomAttributes<T>(MemberInfo) |
Retrieves a collection of custom attributes of a specified type that are applied to a specified member. |
GetCustomAttributes<T>(MemberInfo, Boolean) |
Retrieves a collection of custom attributes of a specified type that are applied to a specified member, and optionally inspects the ancestors of that member. |
IsDefined(MemberInfo, Type) |
Indicates whether custom attributes of a specified type are applied to a specified member. |
IsDefined(MemberInfo, Type, Boolean) |
Indicates whether custom attributes of a specified type are applied to a specified member, and, optionally, applied to its ancestors. |
GetMetadataToken(MemberInfo) |
Gets a metadata token for the given member, if available. |
HasMetadataToken(MemberInfo) |
Returns a value that indicates whether a metadata token is available for the specified member. |
GetBaseDefinition(MethodInfo) | |
GetRuntimeBaseDefinition(MethodInfo) |
Retrieves an object that represents the specified method on the direct or indirect base class where the method was first declared. |