O'Reilly logo

C# in a Nutshell by Peter Drayton, Ted Neward, Ben Albahari

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Name

MethodBuilder

Synopsis

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; } // ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required