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
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 parametri 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 parametri e i modificatori personalizzati per i tipi di parametri specificati. |
DefineGlobalMethod(String, MethodAttributes, Type, Type[]) |
Definisce un metodo globale con il nome, gli attributi, il tipo restituito e i tipi di parametri specificati. |
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[])
- Origine:
- ModuleBuilder.cs
- Origine:
- ModuleBuilder.cs
- Origine:
- ModuleBuilder.cs
Definisce un metodo globale con il nome, gli attributi, la convenzione di chiamata, il tipo restituito e i tipi di parametri 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);
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. Il parametro attributes
deve includere il campo Static.
- callingConvention
- CallingConventions
Convenzione di chiamata del metodo.
- returnType
- Type
Tipo restituito del metodo.
- parameterTypes
- Type[]
Tipi dei parametri del metodo.
Restituisce
Metodo globale definito.
Eccezioni
Il metodo non è statico. In altre parole, attributes
non include Static.
-oppure-
Un elemento nella matrice Type è null
.
name
è null
.
L'oggetto 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 = 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()
Commenti
Non è possibile utilizzare il metodo globale definito da questo metodo fino a quando non si chiama CreateGlobalFunctions.
Nota
A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede ReflectionPermission più con il ReflectionPermissionFlag.ReflectionEmit flag . Vedere Problemi di sicurezza in Reflection Emit. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.
Si applica a
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])
- Origine:
- ModuleBuilder.cs
- Origine:
- ModuleBuilder.cs
- Origine:
- ModuleBuilder.cs
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 parametri e i modificatori personalizzati per i tipi di parametri specificati.
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
Parametri
- name
- String
Nome del metodo.
name
non può contenere caratteri null incorporati.
- attributes
- MethodAttributes
Attributi del metodo. Il parametro attributes
deve includere il campo Static.
- callingConvention
- CallingConventions
Convenzione di chiamata del metodo.
- returnType
- Type
Tipo restituito del metodo.
- requiredReturnTypeCustomModifiers
- Type[]
Matrice di tipi che rappresentano i modificatori personalizzati obbligatori per il tipo restituito, come IsConst o IsBoxed. Se il tipo restituito non ha modificatori personalizzati obbligatori, specificare null
.
- optionalReturnTypeCustomModifiers
- Type[]
Matrice di tipi che rappresentano i modificatori personalizzati opzionali per il tipo restituito, come IsConst o IsBoxed. Se il tipo restituito non ha modificatori personalizzati facoltativi, specificare null
.
- parameterTypes
- Type[]
Tipi dei parametri del metodo.
- requiredParameterTypeCustomModifiers
- Type[][]
Matrice di matrici di tipi. Ciascuna matrice di tipi rappresenta i modificatori personalizzati obbligatori per il parametro corrispondente del metodo globale. Se un determinato argomento non dispone di modificatori personalizzati obbligatori, specificare null
invece di una matrice di tipi. Se il metodo globale non dispone di argomenti oppure se nessun argomento dispone di modificatori personalizzati obbligatori, specificare null
invece di una matrice di matrici.
- optionalParameterTypeCustomModifiers
- Type[][]
Matrice di matrici di tipi. Ciascuna matrice di tipi rappresenta i modificatori personalizzati opzionali per il parametro corrispondente. Se un determinato argomento non dispone di modificatori personalizzati facoltativi, specificare null
invece di una matrice di tipi. Se il metodo globale non dispone di argomenti oppure se nessun argomento dispone di modificatori personalizzati opzionali, specificare null
invece di una matrice di matrici.
Restituisce
Metodo globale definito.
Eccezioni
Il metodo non è statico. In altre parole, attributes
non include Static.
-oppure-
Un elemento nella matrice Type è null
.
name
è null
.
Il metodo CreateGlobalFunctions() è già 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.
Nota
A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede ReflectionPermission più con il ReflectionPermissionFlag.ReflectionEmit flag . Vedere Problemi di sicurezza in Reflection Emit. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.
Si applica a
DefineGlobalMethod(String, MethodAttributes, Type, Type[])
- Origine:
- ModuleBuilder.cs
- Origine:
- ModuleBuilder.cs
- Origine:
- ModuleBuilder.cs
Definisce un metodo globale con il nome, gli attributi, il tipo restituito e i tipi di parametri 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);
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. Il parametro attributes
deve includere il campo Static.
- returnType
- Type
Tipo restituito del metodo.
- parameterTypes
- Type[]
Tipi dei parametri del metodo.
Restituisce
Metodo globale definito.
Eccezioni
Il metodo non è statico. In altre parole, attributes
non include Static.
-oppure-
La lunghezza di name
è zero.
-oppure-
Un elemento nella matrice Type è null
.
name
è null
.
L'oggetto 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 = 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()
Commenti
Il metodo globale definito da questo metodo non è utilizzabile fino a quando non si chiama CreateGlobalFunctions.
Nota
A partire da .NET Framework 2.0 Service Pack 1, questo membro non richiede ReflectionPermission più con il ReflectionPermissionFlag.ReflectionEmit flag . Vedere Problemi di sicurezza in Reflection Emit. Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.