Udostępnij za pośrednictwem


ModuleBuilder.DefineGlobalMethod Metoda

Definicja

Definiuje metodę globalną.

Przeciążenia

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

Definiuje metodę globalną o określonej nazwie, atrybutach, konwencji wywoływania, typie zwracanym i typach parametrów.

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

Definiuje metodę globalną o określonej nazwie, atrybutach, konwencji wywoływania, typie zwracanym, modyfikatorach niestandardowych dla zwracanego typu, typów parametrów i modyfikatorów niestandardowych dla typów parametrów.

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

Definiuje metodę globalną o określonej nazwie, atrybutach, typie zwracanym i typie parametrów.

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

Źródło:
ModuleBuilder.cs
Źródło:
ModuleBuilder.cs
Źródło:
ModuleBuilder.cs

Definiuje metodę globalną o określonej nazwie, atrybutach, konwencji wywoływania, typie zwracanym i typach parametrów.

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

Parametry

name
String

Nazwa metody. name Program nie może zawierać osadzonych wartości null.

attributes
MethodAttributes

Atrybuty metody . attributesmusi zawierać .Static

callingConvention
CallingConventions

Konwencja wywoływania metody .

returnType
Type

Zwracany typ metody.

parameterTypes
Type[]

Typy parametrów metody.

Zwraca

Zdefiniowana metoda globalna.

Wyjątki

Metoda nie jest statyczna. Oznacza to, attributes że nie zawiera Staticelementu .

-lub-

Element w tablicy Type to null.

name to null.

CreateGlobalFunctions() został wcześniej wywołany.

Przykłady

Poniższy przykładowy kod ilustruje użycie metody DefineGlobalMethod do utworzenia metody niezależnej od typu powiązanej z bieżącym ModuleBuilderelementem . Po utworzeniu metody globalnej należy wywołać metodę , CreateGlobalFunctions aby ją ukończyć.

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

Uwagi

Nie można użyć metody globalnej zdefiniowanej przez tę metodę do momentu wywołania CreateGlobalFunctionsmetody .

Uwaga

Począwszy od .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga ReflectionPermission już flagi ReflectionPermissionFlag.ReflectionEmit . (Zobacz Problemy z zabezpieczeniami w emisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla .NET Framework 3.5 lub nowszej.

Dotyczy

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

Źródło:
ModuleBuilder.cs
Źródło:
ModuleBuilder.cs
Źródło:
ModuleBuilder.cs

Definiuje metodę globalną o określonej nazwie, atrybutach, konwencji wywoływania, typie zwracanym, modyfikatorach niestandardowych dla zwracanego typu, typów parametrów i modyfikatorów niestandardowych dla typów parametrów.

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

Parametry

name
String

Nazwa metody. name Nie może zawierać osadzonych znaków null.

attributes
MethodAttributes

Atrybuty metody . attributesmusi zawierać .Static

callingConvention
CallingConventions

Konwencja wywoływania metody .

returnType
Type

Zwracany typ metody.

requiredReturnTypeCustomModifiers
Type[]

Tablica typów reprezentujących wymagane modyfikatory niestandardowe dla typu zwracanego, takiego jak IsConst lub IsBoxed. Jeśli zwracany typ nie ma wymaganych modyfikatorów niestandardowych, określ wartość null.

optionalReturnTypeCustomModifiers
Type[]

Tablica typów reprezentujących opcjonalne modyfikatory niestandardowe dla typu zwracanego, takiego jak IsConst lub IsBoxed. Jeśli zwracany typ nie ma opcjonalnych modyfikatorów niestandardowych, określ wartość null.

parameterTypes
Type[]

Typy parametrów metody.

requiredParameterTypeCustomModifiers
Type[][]

Tablica tablic typów. Każda tablica typów reprezentuje wymagane modyfikatory niestandardowe dla odpowiedniego parametru metody globalnej. Jeśli określony argument nie ma wymaganych modyfikatorów niestandardowych, określ null zamiast tablicy typów. Jeśli metoda globalna nie ma argumentów lub jeśli żaden z argumentów nie wymaga modyfikatorów niestandardowych, określ null zamiast tablicy tablic.

optionalParameterTypeCustomModifiers
Type[][]

Tablica tablic typów. Każda tablica typów reprezentuje opcjonalne modyfikatory niestandardowe dla odpowiedniego parametru. Jeśli określony argument nie ma opcjonalnych modyfikatorów niestandardowych, określ null zamiast tablicy typów. Jeśli metoda globalna nie ma argumentów lub jeśli żaden z argumentów nie ma opcjonalnych modyfikatorów niestandardowych, określ null zamiast tablicy tablic.

Zwraca

Zdefiniowana metoda globalna.

Wyjątki

Metoda nie jest statyczna. Oznacza to, attributes że nie zawiera Staticelementu .

-lub-

Element w tablicy Type to null.

name to null.

Metoda CreateGlobalFunctions() została wcześniej wywołana.

Uwagi

To przeciążenie jest udostępniane dla projektantów zarządzanych kompilatorów.

Nie można użyć metody globalnej zdefiniowanej przez tę metodę do momentu wywołania CreateGlobalFunctionsmetody .

Uwaga

Począwszy od .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga ReflectionPermission już flagi ReflectionPermissionFlag.ReflectionEmit . (Zobacz Problemy z zabezpieczeniami w emisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla .NET Framework 3.5 lub nowszej.

Dotyczy

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

Źródło:
ModuleBuilder.cs
Źródło:
ModuleBuilder.cs
Źródło:
ModuleBuilder.cs

Definiuje metodę globalną o określonej nazwie, atrybutach, typie zwracanym i typie parametrów.

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

Parametry

name
String

Nazwa metody. name Program nie może zawierać osadzonych wartości null.

attributes
MethodAttributes

Atrybuty metody . attributesmusi zawierać .Static

returnType
Type

Zwracany typ metody.

parameterTypes
Type[]

Typy parametrów metody.

Zwraca

Zdefiniowana metoda globalna.

Wyjątki

Metoda nie jest statyczna. Oznacza to, attributes że nie zawiera Staticelementu .

-lub-

Długość to name zero

-lub-

Element w tablicy Type to null.

name to null.

CreateGlobalFunctions() został wcześniej wywołany.

Przykłady

W poniższym przykładzie pokazano użycie metody DefineGlobalMethod do utworzenia metody niezależnej od typu powiązanej z bieżącym ModuleBuilderelementem . Po utworzeniu metody globalnej należy wywołać metodę , CreateGlobalFunctions aby ją ukończyć.

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

Uwagi

Globalna metoda zdefiniowana przez tę metodę nie jest dostępna do momentu wywołania metody CreateGlobalFunctions.

Uwaga

Począwszy od .NET Framework 2.0 z dodatkiem Service Pack 1, ten element członkowski nie wymaga ReflectionPermission już flagi ReflectionPermissionFlag.ReflectionEmit . (Zobacz Problemy z zabezpieczeniami w emisji odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla .NET Framework 3.5 lub nowszej.

Dotyczy