ModuleBuilder.DefineGlobalMethod Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.