ModuleBuilder.DefineGlobalMethod Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje globální metodu.
Přetížení
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) |
Definuje globální metodu se zadaným názvem, atributy, konvencí volání, návratovým typem a typy parametrů. |
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) |
Definuje globální metodu se zadaným názvem, atributy, konvencí volání, návratovým typem, vlastními modifikátory pro návratový typ, typy parametrů a vlastní modifikátory pro typy parametrů. |
DefineGlobalMethod(String, MethodAttributes, Type, Type[]) |
Definuje globální metodu se zadaným názvem, atributy, návratovým typem a typy parametrů. |
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[])
- Zdroj:
- ModuleBuilder.cs
- Zdroj:
- ModuleBuilder.cs
- Zdroj:
- ModuleBuilder.cs
Definuje globální metodu se zadaným názvem, atributy, konvencí volání, návratovým typem a typy parametrů.
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
Název metody
name
nemůže obsahovat vložené hodnoty null.
- attributes
- MethodAttributes
Atributy metody.
attributes
musí obsahovat .Static
- callingConvention
- CallingConventions
Konvence volání pro metodu
- returnType
- Type
Návratový typ metody.
- parameterTypes
- Type[]
Typy parametrů metody
Návraty
Definovaná globální metoda.
Výjimky
Metoda není statická. To znamená, attributes
že nezahrnuje Static.
-nebo-
Prvek v Type poli je null
.
name
je null
.
CreateGlobalFunctions() byla volána dříve.
Příklady
Následující ukázka kódu ukazuje použití DefineGlobalMethod
metody k vytvoření metody nezávislé na typu vázanou na aktuální ModuleBuilder. Po sestavení globální metody CreateGlobalFunctions musí být volána, aby se dokončila.
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()
Poznámky
Nelze použít globální metodu, kterou tato metoda definuje, dokud nevoláte CreateGlobalFunctions.
Poznámka
Počínaje .NET Framework 2.0 Service Pack 1, tento člen již nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit . (Viz Problémy se zabezpečením v reflexi Emit.) Pokud chcete tuto funkci používat, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.
Platí pro
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])
- Zdroj:
- ModuleBuilder.cs
- Zdroj:
- ModuleBuilder.cs
- Zdroj:
- ModuleBuilder.cs
Definuje globální metodu se zadaným názvem, atributy, konvencí volání, návratovým typem, vlastními modifikátory pro návratový typ, typy parametrů a vlastní modifikátory pro typy parametrů.
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
Název metody
name
nesmí obsahovat vložené znaky null.
- attributes
- MethodAttributes
Atributy metody.
attributes
musí obsahovat .Static
- callingConvention
- CallingConventions
Konvence volání pro metodu
- returnType
- Type
Návratový typ metody.
- requiredReturnTypeCustomModifiers
- Type[]
Pole typů představující požadované vlastní modifikátory pro návratový typ, například IsConst nebo IsBoxed. Pokud návratový typ nemá žádné požadované vlastní modifikátory, zadejte null
.
- optionalReturnTypeCustomModifiers
- Type[]
Pole typů představujících volitelné vlastní modifikátory návratového typu, například IsConst nebo IsBoxed. Pokud návratový typ nemá žádné volitelné vlastní modifikátory, zadejte null
.
- parameterTypes
- Type[]
Typy parametrů metody
- requiredParameterTypeCustomModifiers
- Type[][]
Pole polí typů. Každé pole typů představuje požadované vlastní modifikátory pro odpovídající parametr globální metody. Pokud určitý argument nemá žádné požadované vlastní modifikátory, zadejte null
místo pole typů. Pokud globální metoda nemá žádné argumenty nebo pokud žádný z argumentů nevyžaduje vlastní modifikátory, zadejte null
místo pole polí.
- optionalParameterTypeCustomModifiers
- Type[][]
Pole polí typů. Každé pole typů představuje volitelné vlastní modifikátory odpovídajícího parametru. Pokud určitý argument nemá žádné volitelné vlastní modifikátory, zadejte null
místo pole typů. Pokud globální metoda nemá žádné argumenty nebo pokud žádný z argumentů nemá volitelné vlastní modifikátory, zadejte null
místo pole polí.
Návraty
Definovaná globální metoda.
Výjimky
Metoda není statická. To znamená, attributes
že nezahrnuje Static.
-nebo-
Prvek v Type poli je null
.
name
je null
.
Metoda CreateGlobalFunctions() byla dříve volána.
Poznámky
Toto přetížení je k dispozici pro návrháře spravovaných kompilátorů.
Nelze použít globální metodu, kterou tato metoda definuje, dokud nevoláte CreateGlobalFunctions.
Poznámka
Počínaje .NET Framework 2.0 Service Pack 1, tento člen již nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit . (Viz Problémy se zabezpečením v reflexi Emit.) Pokud chcete tuto funkci používat, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.
Platí pro
DefineGlobalMethod(String, MethodAttributes, Type, Type[])
- Zdroj:
- ModuleBuilder.cs
- Zdroj:
- ModuleBuilder.cs
- Zdroj:
- ModuleBuilder.cs
Definuje globální metodu se zadaným názvem, atributy, návratovým typem a typy parametrů.
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
Název metody
name
nemůže obsahovat vložené hodnoty null.
- attributes
- MethodAttributes
Atributy metody.
attributes
musí obsahovat .Static
- returnType
- Type
Návratový typ metody.
- parameterTypes
- Type[]
Typy parametrů metody
Návraty
Definovaná globální metoda.
Výjimky
Metoda není statická. To znamená, attributes
že nezahrnuje Static.
-nebo-
Délka je name
nula.
-nebo-
Prvek v Type poli je null
.
name
je null
.
CreateGlobalFunctions() byla volána dříve.
Příklady
Následující příklad znázorňuje použití DefineGlobalMethod
k vytvoření metody nezávislé na typu vázanou na aktuální ModuleBuilder. Po sestavení globální metody CreateGlobalFunctions musí být volána, aby se dokončila.
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()
Poznámky
Globální metoda, kterou tato metoda definuje, není použitelná, dokud nezavoláte CreateGlobalFunctions.
Poznámka
Počínaje .NET Framework 2.0 Service Pack 1, tento člen již nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit . (Viz Problémy se zabezpečením v reflexi Emit.) Pokud chcete tuto funkci používat, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.