ModuleBuilder::DefineGlobalMethod Method (String^, MethodAttributes, Type^, array<Type^>^)
Defines a global method with the specified name, attributes, return type, and parameter types.
Assembly: mscorlib (in mscorlib.dll)
public: MethodBuilder^ DefineGlobalMethod( String^ name, MethodAttributes attributes, Type^ returnType, array<Type^>^ parameterTypes )
Parameters
- name
-
Type:
System::String^
The name of the method. name cannot contain embedded nulls.
- attributes
-
Type:
System.Reflection::MethodAttributes
The attributes of the method. attributes must include Static.
- returnType
-
Type:
System::Type^
The return type of the method.
- parameterTypes
-
Type:
array<System::Type^>^
The types of the method's parameters.
| Exception | Condition |
|---|---|
| ArgumentException | |
| ArgumentNullException | name is null. |
| InvalidOperationException | CreateGlobalFunctions has been previously called. |
The global method that this method defines is not usable until you call CreateGlobalFunctions.
Note |
|---|
Starting with the .NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag::ReflectionEmit flag. (See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5 or later. |
The following example illustrates the use of DefineGlobalMethod to create a type-independent method tied to the current ModuleBuilder. After building the global method, CreateGlobalFunctions must be called in order to complete it.
AppDomain^ currentDomain; AssemblyName^ myAssemblyName; MethodBuilder^ myMethodBuilder = nullptr; ILGenerator^ myILGenerator; // Get the current application domain for the current thread. currentDomain = AppDomain::CurrentDomain; myAssemblyName = gcnew AssemblyName; myAssemblyName->Name = "TempAssembly"; // Define a dynamic assembly in the 'currentDomain'. myAssemblyBuilder = currentDomain->DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess::RunAndSave ); // Define a dynamic module in "TempAssembly" assembly. myModuleBuilder = myAssemblyBuilder->DefineDynamicModule( "TempModule" ); // Define a global method in the 'TempModule' module. myMethodBuilder = myModuleBuilder->DefineGlobalMethod( "MyMethod1", (MethodAttributes)(MethodAttributes::Static | MethodAttributes::Public), nullptr, nullptr ); myILGenerator = myMethodBuilder->GetILGenerator(); myILGenerator->EmitWriteLine( "Hello World from global method." ); myILGenerator->Emit( OpCodes::Ret ); // Fix up the 'TempModule' module . myModuleBuilder->CreateGlobalFunctions();
Available since 1.1
Silverlight
Available since 2.0
