ModuleBuilder.DefineGlobalMethod Metodo

Definizione

Definisce un metodo globale.

Overload

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

Definisce un metodo globale con il nome, gli attributi, il tipo restituito e i tipi di parametro specificati.

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

Definisce un metodo globale con il nome, gli attributi, la convenzione di chiamata, il tipo restituito e i tipi di parametro specificati.

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

Definisce un metodo globale con il nome, gli attributi, la convenzione di chiamata, il tipo restituito, i modificatori personalizzati per il tipo restituito, i tipi di parametro e i modificatori personalizzati per i tipi di parametro.

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

Definisce un metodo globale con il nome, gli attributi, il tipo restituito e i tipi di parametro specificati.

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);
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

Parametri

name
String

Nome del metodo. name non può contenere valori Null incorporati.

attributes
MethodAttributes

Attributi del metodo . attributes deve includere Static.

returnType
Type

Tipo restituito del metodo.

parameterTypes
Type[]

Tipi dei parametri del metodo.

Valori restituiti

Metodo globale definito.

Eccezioni

Il metodo non è statico. Ovvero, attributes non include Static.

oppure

La lunghezza di name è zero

oppure

Un elemento nella Type matrice è null.

name è null.

CreateGlobalFunctions() è stato chiamato in precedenza.

Esempio

Nell'esempio seguente viene illustrato l'uso di DefineGlobalMethod per creare un metodo indipendente dal tipo associato all'oggetto corrente ModuleBuilder. Dopo aver compilato il metodo globale, CreateGlobalFunctions è necessario chiamare per completarlo.

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()

Commenti

Il metodo globale definito da questo metodo non è utilizzabile fino a quando non si chiama CreateGlobalFunctions.

Si applica a

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

Definisce un metodo globale con il nome, gli attributi, la convenzione di chiamata, il tipo restituito e i tipi di parametro specificati.

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);
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

Parametri

name
String

Nome del metodo. name non può contenere valori Null incorporati.

attributes
MethodAttributes

Attributi del metodo . attributes deve includere Static.

callingConvention
CallingConventions

Convenzione di chiamata per il metodo .

returnType
Type

Tipo restituito del metodo.

parameterTypes
Type[]

Tipi dei parametri del metodo.

Valori restituiti

Metodo globale definito.

Eccezioni

Il metodo non è statico. Ovvero, attributes non include Static.

oppure

Un elemento nella Type matrice è null.

name è null.

CreateGlobalFunctions() è stato chiamato in precedenza.

Esempio

Nell'esempio di codice seguente viene illustrato l'uso di DefineGlobalMethod per creare un metodo indipendente dal tipo associato all'oggetto corrente ModuleBuilder. Dopo aver compilato il metodo globale, CreateGlobalFunctions è necessario chiamare per completarlo.

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()

Commenti

Non è possibile utilizzare il metodo globale definito da questo metodo fino a quando non si chiama CreateGlobalFunctions.

Si applica a

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

Definisce un metodo globale con il nome, gli attributi, la convenzione di chiamata, il tipo restituito, i modificatori personalizzati per il tipo restituito, i tipi di parametro e i modificatori personalizzati per i tipi di parametro.

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);
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

Parametri

name
String

Nome del metodo. name non può contenere caratteri Null incorporati.

attributes
MethodAttributes

Attributi del metodo . attributes deve includere Static.

callingConvention
CallingConventions

Convenzione di chiamata per il metodo .

returnType
Type

Tipo restituito del metodo.

requiredReturnTypeCustomModifiers
Type[]

Matrice di tipi che rappresentano i modificatori personalizzati necessari per il tipo restituito, ad esempio IsConst o IsBoxed. Se il tipo restituito non dispone di modificatori personalizzati obbligatori, specificare null.

optionalReturnTypeCustomModifiers
Type[]

Matrice di tipi che rappresentano i modificatori personalizzati facoltativi per il tipo restituito, ad esempio IsConst o IsBoxed. Se il tipo restituito non dispone di modificatori personalizzati facoltativi, specificare null.

parameterTypes
Type[]

Tipi dei parametri del metodo.

requiredParameterTypeCustomModifiers
Type[][]

Matrice di matrici di tipi. Ogni matrice di tipi rappresenta i modificatori personalizzati necessari per il parametro corrispondente del metodo globale. Se un argomento specifico non include modificatori personalizzati obbligatori, specificare null invece di una matrice di tipi. Se il metodo globale non ha argomenti o se nessuno degli argomenti dispone di modificatori personalizzati obbligatori, specificare null invece di una matrice di matrici.

optionalParameterTypeCustomModifiers
Type[][]

Matrice di matrici di tipi. Ogni matrice di tipi rappresenta i modificatori personalizzati facoltativi per il parametro corrispondente. Se un argomento specifico non include modificatori personalizzati facoltativi, specificare null anziché una matrice di tipi. Se il metodo globale non ha argomenti o se nessuno degli argomenti dispone di modificatori personalizzati facoltativi, specificare null invece di una matrice di matrici.

Valori restituiti

Metodo globale definito.

Eccezioni

Il metodo non è statico. Ovvero, attributes non include Static.

oppure

Un elemento nella Type matrice è null.

name è null.

Il CreateGlobalFunctions() metodo è stato chiamato in precedenza.

Commenti

Questo overload viene fornito per le finestre di progettazione dei compilatori gestiti.

Non è possibile utilizzare il metodo globale definito da questo metodo fino a quando non si chiama CreateGlobalFunctions.

Si applica a