This class represents a dynamically created method. Methods are created with TypeBuilder.DefineMethod(). When creating a method, specify the name, parameters, and return type. You can also specify other characteristics of the method, such as whether it is static, abstract, or virtual, by using the System.Reflection.MethodAttributes enumeration. After creating a method, you can specify how the return value will be marshaled to unmanaged code using SetMarshal(), and add declarative security using AddDeclarativeSecurity() You must specify the security action (such as Demand, Assert, Deny) using the System.Security.Permissions.SecurityAction enumeration, and the permissions required using the System.Security.PermissionSet collection class. You can call AddDeclarativeSecurity() several times to specify different security actions.

To create a global method builder, use ModuleBuilder.DefineGlobalMethod(). You must also use ModuleBuilder.CreateGlobalFunctions() to finish creating global methods before you persist or use the dynamic module. Global methods must be static. You can also create a global native method using ModuleBuilder.DefinePInvokeMethod(). PInvoke methods cannot be abstract or virtual.

public sealed class MethodBuilder : System.Reflection.MethodInfo {
// Public Instance Properties
   public override field MethodAttributes Attributes{get; } // overrides System.Reflection.MethodBase
   public override field CallingConventions CallingConvention{get; } // ...

Get C# in a Nutshell now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.