Freigeben über


ModuleBuilder.DefineGlobalMethod Methode

Definition

Definiert eine globale Methode.

Überlädt

DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[])

Definiert eine globale Methode mit den Angaben für Name, Attribute, Aufrufkonvention, Rückgabetyp und Parametertypen.

DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])

Definiert eine globale Methode mit den Angaben für Name, Attribute, Aufrufkonvention, Rückgabetyp, benutzerdefinierte Modifizierer für den Rückgabetyp, Parametertypen und benutzerdefinierte Modifizierer für die Parametertypen.

DefineGlobalMethod(String, MethodAttributes, Type, Type[])

Definiert eine globale Methode mit den Angaben für Name, Attribute, Rückgabetyp und Parametertypen.

DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[])

Quelle:
ModuleBuilder.cs
Quelle:
ModuleBuilder.cs
Quelle:
ModuleBuilder.cs

Definiert eine globale Methode mit den Angaben für Name, Attribute, Aufrufkonvention, Rückgabetyp und Parametertypen.

public:
 System::Reflection::Emit::MethodBuilder ^ DefineGlobalMethod(System::String ^ name, System::Reflection::MethodAttributes attributes, System::Reflection::CallingConventions callingConvention, Type ^ returnType, cli::array <Type ^> ^ parameterTypes);
public System.Reflection.Emit.MethodBuilder DefineGlobalMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes);
public System.Reflection.Emit.MethodBuilder DefineGlobalMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type returnType, Type[] parameterTypes);
member this.DefineGlobalMethod : string * System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type * Type[] -> System.Reflection.Emit.MethodBuilder
Public Function DefineGlobalMethod (name As String, attributes As MethodAttributes, callingConvention As CallingConventions, returnType As Type, parameterTypes As Type()) As MethodBuilder

Parameter

name
String

Der Name der Methode. name darf keine eingebetteten NULL-Werte enthalten.

attributes
MethodAttributes

Die Attribute der Methode. attributes muss Static enthalten.

callingConvention
CallingConventions

Die Aufrufkonvention für die Methode.

returnType
Type

Der Rückgabetyp der Methode.

parameterTypes
Type[]

Die Typen der Parameter der Methode.

Gibt zurück

Die definierte globale Methode.

Ausnahmen

Die Methode ist nicht statisch. Das heißt, attributes enthält nicht Static.

- oder -

Ein Element im Type-Array ist null.

name ist null.

CreateGlobalFunctions() wurde bereits zuvor aufgerufen.

Beispiele

Im folgenden Codebeispiel wird die Verwendung von DefineGlobalMethod veranschaulicht, um eine typunabhängige Methode zu erstellen, die an die aktuelle ModuleBuildergebunden ist. Nach dem Erstellen der globalen Methode muss aufgerufen werden, CreateGlobalFunctions um sie abzuschließen.

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();
AppDomain currentDomain;
AssemblyName myAssemblyName;
MethodBuilder myMethodBuilder=null;
ILGenerator myILGenerator;

// Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain;
myAssemblyName = new 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.Static|MethodAttributes.Public,
           null,null);
myILGenerator = myMethodBuilder.GetILGenerator();
myILGenerator.EmitWriteLine("Hello World from global method.");
myILGenerator.Emit(OpCodes.Ret);
// Fix up the 'TempModule' module .
myModuleBuilder.CreateGlobalFunctions();
Dim currentDomain As AppDomain
Dim myAssemblyName As AssemblyName
Dim myMethodBuilder As MethodBuilder = Nothing
Dim myILGenerator As ILGenerator

' Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain
myAssemblyName = New 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.Static _
                                          Or MethodAttributes.Public, Nothing, Nothing)
myILGenerator = myMethodBuilder.GetILGenerator()
myILGenerator.EmitWriteLine("Hello World from global method.")
myILGenerator.Emit(OpCodes.Ret)
' Fix up the 'TempModule' module .
myModuleBuilder.CreateGlobalFunctions()

Hinweise

Sie können die globale Methode, die von dieser Methode definiert wird, erst verwenden, wenn Sie aufrufen CreateGlobalFunctions.

Hinweis

Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflektionsausgabe.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher ausgerichtet sein.

Gilt für:

DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])

Quelle:
ModuleBuilder.cs
Quelle:
ModuleBuilder.cs
Quelle:
ModuleBuilder.cs

Definiert eine globale Methode mit den Angaben für Name, Attribute, Aufrufkonvention, Rückgabetyp, benutzerdefinierte Modifizierer für den Rückgabetyp, Parametertypen und benutzerdefinierte Modifizierer für die Parametertypen.

public:
 System::Reflection::Emit::MethodBuilder ^ DefineGlobalMethod(System::String ^ name, System::Reflection::MethodAttributes attributes, System::Reflection::CallingConventions callingConvention, Type ^ returnType, cli::array <Type ^> ^ requiredReturnTypeCustomModifiers, cli::array <Type ^> ^ optionalReturnTypeCustomModifiers, cli::array <Type ^> ^ parameterTypes, cli::array <cli::array <Type ^> ^> ^ requiredParameterTypeCustomModifiers, cli::array <cli::array <Type ^> ^> ^ optionalParameterTypeCustomModifiers);
public System.Reflection.Emit.MethodBuilder DefineGlobalMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers);
public System.Reflection.Emit.MethodBuilder DefineGlobalMethod (string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type returnType, Type[] requiredReturnTypeCustomModifiers, Type[] optionalReturnTypeCustomModifiers, Type[] parameterTypes, Type[][] requiredParameterTypeCustomModifiers, Type[][] optionalParameterTypeCustomModifiers);
member this.DefineGlobalMethod : string * System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type * Type[] * Type[] * Type[] * Type[][] * Type[][] -> System.Reflection.Emit.MethodBuilder
Public Function DefineGlobalMethod (name As String, attributes As MethodAttributes, callingConvention As CallingConventions, returnType As Type, requiredReturnTypeCustomModifiers As Type(), optionalReturnTypeCustomModifiers As Type(), parameterTypes As Type(), requiredParameterTypeCustomModifiers As Type()(), optionalParameterTypeCustomModifiers As Type()()) As MethodBuilder

Parameter

name
String

Der Name der Methode. name darf keine eingebetteten Nullzeichen enthalten.

attributes
MethodAttributes

Die Attribute der Methode. attributes muss Static enthalten.

callingConvention
CallingConventions

Die Aufrufkonvention für die Methode.

returnType
Type

Der Rückgabetyp der Methode.

requiredReturnTypeCustomModifiers
Type[]

Ein Array von Typen, die die erforderlichen benutzerdefinierten Modifizierer für den Rückgabetyp darstellen, z. B. IsConst oder IsBoxed. Wenn der Rückgabetyp keine erforderlichen benutzerdefinierten Modifizierer hat, geben Sie nullan.

optionalReturnTypeCustomModifiers
Type[]

Ein Array von Typen, die die optionalen benutzerdefinierten Modifizierer für den Rückgabetyp darstellen, z. B. IsConst oder IsBoxed. Wenn der Rückgabetyp keine optionalen benutzerdefinierten Modifizierer hat, geben Sie null an.

parameterTypes
Type[]

Die Typen der Parameter der Methode.

requiredParameterTypeCustomModifiers
Type[][]

Ein Array mit Arrays von Typen. Jedes Array von Typen stellt die erforderlichen benutzerdefinierten Modifizierer für den entsprechenden Parameter der globalen Methode dar. Wenn ein bestimmtes Argument über keine erforderlichen benutzerdefinierten Modifizierer verfügt, geben Sie anstelle eines Arrays von Typen null an. Wenn die globale Methode über keine Argumente oder keines der Argumente über erforderliche benutzerdefinierte Modifizierer verfügt, geben Sie anstelle eines Arrays von Arrays null an.

optionalParameterTypeCustomModifiers
Type[][]

Ein Array mit Arrays von Typen. Jedes Array von Typen stellt die optionalen benutzerdefinierten Modifizierer für den entsprechenden Parameter dar. Wenn ein bestimmtes Argument über keine optionalen benutzerdefinierten Modifizierer verfügt, geben Sie anstelle eines Arrays von Typen null an. Wenn die globale Methode über keine Argumente oder keines der Argumente über optionale benutzerdefinierte Modifizierer verfügt, geben Sie anstelle eines Arrays von Arrays null an.

Gibt zurück

Die definierte globale Methode.

Ausnahmen

Die Methode ist nicht statisch. Das heißt, attributes enthält nicht Static.

- oder -

Ein Element im Type-Array ist null.

name ist null.

Die CreateGlobalFunctions()-Methode wurde zuvor aufgerufen.

Hinweise

Diese Überladung wird für Designer verwalteter Compiler bereitgestellt.

Sie können die globale Methode, die von dieser Methode definiert wird, erst verwenden, wenn Sie aufrufen CreateGlobalFunctions.

Hinweis

Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflektionsausgabe.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher ausgerichtet sein.

Gilt für:

DefineGlobalMethod(String, MethodAttributes, Type, Type[])

Quelle:
ModuleBuilder.cs
Quelle:
ModuleBuilder.cs
Quelle:
ModuleBuilder.cs

Definiert eine globale Methode mit den Angaben für Name, Attribute, Rückgabetyp und Parametertypen.

public:
 System::Reflection::Emit::MethodBuilder ^ DefineGlobalMethod(System::String ^ name, System::Reflection::MethodAttributes attributes, Type ^ returnType, cli::array <Type ^> ^ parameterTypes);
public System.Reflection.Emit.MethodBuilder DefineGlobalMethod (string name, System.Reflection.MethodAttributes attributes, Type? returnType, Type[]? parameterTypes);
public System.Reflection.Emit.MethodBuilder DefineGlobalMethod (string name, System.Reflection.MethodAttributes attributes, Type returnType, Type[] parameterTypes);
member this.DefineGlobalMethod : string * System.Reflection.MethodAttributes * Type * Type[] -> System.Reflection.Emit.MethodBuilder
Public Function DefineGlobalMethod (name As String, attributes As MethodAttributes, returnType As Type, parameterTypes As Type()) As MethodBuilder

Parameter

name
String

Der Name der Methode. name darf keine eingebetteten NULL-Werte enthalten.

attributes
MethodAttributes

Die Attribute der Methode. attributes muss Static enthalten.

returnType
Type

Der Rückgabetyp der Methode.

parameterTypes
Type[]

Die Typen der Parameter der Methode.

Gibt zurück

Die definierte globale Methode.

Ausnahmen

Die Methode ist nicht statisch. Das heißt, attributes enthält nicht Static.

- oder -

Die Länge von name ist 0.

- oder -

Ein Element im Type-Array ist null.

name ist null.

CreateGlobalFunctions() wurde bereits zuvor aufgerufen.

Beispiele

Im folgenden Beispiel wird die Verwendung von DefineGlobalMethod veranschaulicht, um eine typunabhängige Methode zu erstellen, die an die aktuelle ModuleBuildergebunden ist. Nach dem Erstellen der globalen Methode muss aufgerufen werden, CreateGlobalFunctions um sie abzuschließen.

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();
AppDomain currentDomain;
AssemblyName myAssemblyName;
MethodBuilder myMethodBuilder=null;
ILGenerator myILGenerator;

// Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain;
myAssemblyName = new 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.Static|MethodAttributes.Public,
           null,null);
myILGenerator = myMethodBuilder.GetILGenerator();
myILGenerator.EmitWriteLine("Hello World from global method.");
myILGenerator.Emit(OpCodes.Ret);
// Fix up the 'TempModule' module .
myModuleBuilder.CreateGlobalFunctions();
Dim currentDomain As AppDomain
Dim myAssemblyName As AssemblyName
Dim myMethodBuilder As MethodBuilder = Nothing
Dim myILGenerator As ILGenerator

' Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain
myAssemblyName = New 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.Static _
                                          Or MethodAttributes.Public, Nothing, Nothing)
myILGenerator = myMethodBuilder.GetILGenerator()
myILGenerator.EmitWriteLine("Hello World from global method.")
myILGenerator.Emit(OpCodes.Ret)
' Fix up the 'TempModule' module .
myModuleBuilder.CreateGlobalFunctions()

Hinweise

Die von dieser Methode definierte globale Methode kann erst verwendet werden, wenn Sie aufrufen CreateGlobalFunctions.

Hinweis

Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflektionsausgabe.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher ausgerichtet sein.

Gilt für: