ModuleBuilder.DefineGlobalMethod Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 .
attributes
musi 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 .
attributes
musi 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 .
attributes
musi 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.