ModuleBuilder.DefineGlobalMethod Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendefinisikan metode global.
Overload
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) |
Menentukan metode global dengan nama, atribut, konvensi panggilan, jenis pengembalian, dan jenis parameter yang ditentukan. |
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) |
Menentukan metode global dengan nama, atribut, konvensi panggilan yang ditentukan, jenis pengembalian, pengubah kustom untuk jenis pengembalian, jenis parameter, dan pengubah kustom untuk jenis parameter. |
DefineGlobalMethod(String, MethodAttributes, Type, Type[]) |
Menentukan metode global dengan nama, atribut, jenis pengembalian, dan jenis parameter yang ditentukan. |
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[])
- Sumber:
- ModuleBuilder.cs
- Sumber:
- ModuleBuilder.cs
- Sumber:
- ModuleBuilder.cs
Menentukan metode global dengan nama, atribut, konvensi panggilan, jenis pengembalian, dan jenis parameter yang ditentukan.
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
Parameter
- name
- String
Nama metode .
name
tidak boleh berisi null yang disematkan.
- attributes
- MethodAttributes
Atribut metode .
attributes
harus menyertakan Static.
- callingConvention
- CallingConventions
Konvensi panggilan untuk metode .
- returnType
- Type
Jenis pengembalian metode .
- parameterTypes
- Type[]
Jenis parameter metode.
Mengembalikan
Metode global yang ditentukan.
Pengecualian
Metode ini tidak statis. Artinya, attributes
tidak termasuk Static.
-atau-
Elemen dalam Type array adalah null
.
name
adalah null
.
CreateGlobalFunctions() telah dipanggil sebelumnya.
Contoh
Sampel kode berikut mengilustrasikan penggunaan DefineGlobalMethod
untuk membuat metode tipe independen yang terkait dengan saat ini ModuleBuilder. Setelah membangun metode global, CreateGlobalFunctions harus dipanggil untuk menyelesaikannya.
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()
Keterangan
Anda tidak dapat menggunakan metode global yang ditentukan metode ini hingga Anda memanggil CreateGlobalFunctions.
Catatan
Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan ReflectionPermissionFlag.ReflectionEmit bendera . (Lihat Masalah Keamanan dalam Pancaran Pancaran.) Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.
Berlaku untuk
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])
- Sumber:
- ModuleBuilder.cs
- Sumber:
- ModuleBuilder.cs
- Sumber:
- ModuleBuilder.cs
Menentukan metode global dengan nama, atribut, konvensi panggilan yang ditentukan, jenis pengembalian, pengubah kustom untuk jenis pengembalian, jenis parameter, dan pengubah kustom untuk jenis parameter.
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
Parameter
- name
- String
Nama metode .
name
tidak boleh berisi karakter null yang disematkan.
- attributes
- MethodAttributes
Atribut metode .
attributes
harus menyertakan Static.
- callingConvention
- CallingConventions
Konvensi panggilan untuk metode .
- returnType
- Type
Jenis pengembalian metode .
- requiredReturnTypeCustomModifiers
- Type[]
Array jenis yang mewakili pengubah kustom yang diperlukan untuk jenis pengembalian, seperti IsConst atau IsBoxed. Jika jenis pengembalian tidak memiliki pengubah kustom yang diperlukan, tentukan null
.
- optionalReturnTypeCustomModifiers
- Type[]
Array jenis yang mewakili pengubah kustom opsional untuk jenis pengembalian, seperti IsConst atau IsBoxed. Jika jenis pengembalian tidak memiliki pengubah kustom opsional, tentukan null
.
- parameterTypes
- Type[]
Jenis parameter metode.
- requiredParameterTypeCustomModifiers
- Type[][]
Array jenis array. Setiap array jenis mewakili pengubah kustom yang diperlukan untuk parameter yang sesuai dari metode global. Jika argumen tertentu tidak memiliki pengubah kustom yang diperlukan, tentukan null
alih-alih array jenis. Jika metode global tidak memiliki argumen, atau jika tidak ada argumen yang memerlukan pengubah kustom, tentukan null
alih-alih array array.
- optionalParameterTypeCustomModifiers
- Type[][]
Array jenis array. Setiap array jenis mewakili pengubah kustom opsional untuk parameter yang sesuai. Jika argumen tertentu tidak memiliki pengubah kustom opsional, tentukan null
alih-alih array jenis. Jika metode global tidak memiliki argumen, atau jika tidak ada argumen yang memiliki pengubah kustom opsional, tentukan null
alih-alih array array.
Mengembalikan
Metode global yang ditentukan.
Pengecualian
Metode ini tidak statis. Artinya, attributes
tidak termasuk Static.
-atau-
Elemen dalam Type array adalah null
.
name
adalah null
.
Metode CreateGlobalFunctions() ini sebelumnya telah dipanggil.
Keterangan
Kelebihan beban ini disediakan untuk perancang kompilator terkelola.
Anda tidak dapat menggunakan metode global yang ditentukan metode ini hingga Anda memanggil CreateGlobalFunctions.
Catatan
Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan ReflectionPermissionFlag.ReflectionEmit bendera . (Lihat Masalah Keamanan dalam Pancaran Pancaran.) Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.
Berlaku untuk
DefineGlobalMethod(String, MethodAttributes, Type, Type[])
- Sumber:
- ModuleBuilder.cs
- Sumber:
- ModuleBuilder.cs
- Sumber:
- ModuleBuilder.cs
Menentukan metode global dengan nama, atribut, jenis pengembalian, dan jenis parameter yang ditentukan.
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
Parameter
- name
- String
Nama metode .
name
tidak boleh berisi null yang disematkan.
- attributes
- MethodAttributes
Atribut metode .
attributes
harus menyertakan Static.
- returnType
- Type
Jenis pengembalian metode .
- parameterTypes
- Type[]
Jenis parameter metode.
Mengembalikan
Metode global yang ditentukan.
Pengecualian
Metode ini tidak statis. Artinya, attributes
tidak termasuk Static.
-atau-
Panjangnya name
adalah nol
-atau-
Elemen dalam Type array adalah null
.
name
adalah null
.
CreateGlobalFunctions() telah dipanggil sebelumnya.
Contoh
Contoh berikut mengilustrasikan penggunaan DefineGlobalMethod
untuk membuat metode independen jenis yang terkait dengan .ModuleBuilder Setelah membangun metode global, CreateGlobalFunctions harus dipanggil untuk menyelesaikannya.
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()
Keterangan
Metode global yang ditentukan metode ini tidak dapat digunakan sampai Anda memanggil CreateGlobalFunctions.
Catatan
Dimulai dengan .NET Framework 2.0 Service Pack 1, anggota ini tidak lagi memerlukan ReflectionPermission dengan ReflectionPermissionFlag.ReflectionEmit bendera . (Lihat Masalah Keamanan dalam Pancaran Pancaran.) Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.