ModuleBuilder.DefineGlobalMethod Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет глобальный метод.
Перегрузки
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) |
Определяет глобальный метод с данными именем, атрибутами, соглашениями о вызовах, возвращаемыми типами и типами параметров. |
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) |
Определяет глобальный метод с данными именем, атрибутами, соглашениями о вызовах, возвращаемым типом, пользовательскими модификаторами для возвращаемого типа, типами параметров и пользовательскими модификаторами для типов параметров. |
DefineGlobalMethod(String, MethodAttributes, Type, Type[]) |
Определяет глобальный метод с данными именем, атрибутами, возвращаемыми типами и типами параметров. |
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[])
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- ModuleBuilder.cs
Определяет глобальный метод с данными именем, атрибутами, соглашениями о вызовах, возвращаемыми типами и типами параметров.
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
Параметры
- name
- String
Имя метода. Параметр name
не может содержать внедренные значения NULL.
- attributes
- MethodAttributes
Атрибуты метода. Параметр attributes
должен включать атрибут Static.
- callingConvention
- CallingConventions
Соглашение о вызовах для метода.
- returnType
- Type
Тип возвращаемых данных метода.
- parameterTypes
- Type[]
Типы параметров метода.
Возвращаемое значение
Определенный глобальный метод.
Исключения
Метод не является статическим. То есть параметр attributes
не включает Static.
-или-
Элементом массива Type является null
.
name
имеет значение null
.
CreateGlobalFunctions() был вызван ранее.
Примеры
В следующем примере кода показано использование DefineGlobalMethod
для создания независимого от типа метода, привязанного к текущему ModuleBuilderобъекту . После построения глобального метода необходимо вызвать для CreateGlobalFunctions его завершения.
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()
Комментарии
Глобальный метод, определяемый этим методом, нельзя использовать до тех пор, пока вы не вызовете CreateGlobalFunctions.
Примечание
Начиная с платформа .NET Framework 2.0 с пакетом обновления 1 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не требуется ReflectionPermission использовать флаг . (См. раздел Проблемы безопасности при отражении.) Чтобы использовать эту функцию, приложение должно быть ориентировано на платформа .NET Framework 3.5 или более поздней версии.
Применяется к
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- ModuleBuilder.cs
Определяет глобальный метод с данными именем, атрибутами, соглашениями о вызовах, возвращаемым типом, пользовательскими модификаторами для возвращаемого типа, типами параметров и пользовательскими модификаторами для типов параметров.
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
Параметры
- name
- String
Имя метода. Параметр name
не должен содержать внедренные символы NULL.
- attributes
- MethodAttributes
Атрибуты метода. Параметр attributes
должен включать атрибут Static.
- callingConvention
- CallingConventions
Соглашение о вызовах для метода.
- returnType
- Type
Тип возвращаемых данных метода.
- requiredReturnTypeCustomModifiers
- Type[]
Массив типов представляет собой требуемые пользовательские модификаторы для возвращаемого типа, например IsConst или IsBoxed. Если возвращаемый тип не содержит требуемых настраиваемых модификаторов, укажите null
.
- optionalReturnTypeCustomModifiers
- Type[]
Массив типов представляет собой необязательные пользовательские модификаторы для возвращаемого типа, например IsConst или IsBoxed. Если возвращаемый тип не содержит необязательные настраиваемые модификаторы, укажите null
.
- parameterTypes
- Type[]
Типы параметров метода.
- requiredParameterTypeCustomModifiers
- Type[][]
Массив массивов типов. Каждый массив типов представляет собой требуемые пользовательские модификаторы для соответствующего параметра глобального метода. Если определенный аргумент не содержит требуемые пользовательские модификаторы, вместо массива данных укажите null
. Если глобальный метод не содержит аргументов или если аргументы не содержат пользовательские модификаторы, укажите значение null
вместо массива массивов.
- optionalParameterTypeCustomModifiers
- Type[][]
Массив массивов типов. Каждый массив типов представляет собой необязательные пользовательские модификаторы для соответствующего параметра. Если определенный аргумент не содержит необязательные пользовательские модификаторы, вместо массива данных укажите null
. Если глобальный метод не содержит аргументов или если аргументы не содержат необязательные пользовательские модификаторы, укажите значение null
вместо массива массивов.
Возвращаемое значение
Определенный глобальный метод.
Исключения
Метод не является статическим. То есть параметр attributes
не включает Static.
-или-
Элементом массива Type является null
.
name
имеет значение null
.
Метод CreateGlobalFunctions() вызывался до этого.
Комментарии
Эта перегрузка предоставляется для конструкторов управляемых компиляторов.
Глобальный метод, определяемый этим методом, нельзя использовать до тех пор, пока вы не вызовете CreateGlobalFunctions.
Примечание
Начиная с платформа .NET Framework 2.0 с пакетом обновления 1 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не требуется ReflectionPermission использовать флаг . (См. раздел Проблемы безопасности при отражении.) Чтобы использовать эту функцию, приложение должно быть ориентировано на платформа .NET Framework 3.5 или более поздней версии.
Применяется к
DefineGlobalMethod(String, MethodAttributes, Type, Type[])
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- ModuleBuilder.cs
Определяет глобальный метод с данными именем, атрибутами, возвращаемыми типами и типами параметров.
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
Параметры
- name
- String
Имя метода. Параметр name
не может содержать внедренные значения NULL.
- attributes
- MethodAttributes
Атрибуты метода. Параметр attributes
должен включать атрибут Static.
- returnType
- Type
Тип возвращаемых данных метода.
- parameterTypes
- Type[]
Типы параметров метода.
Возвращаемое значение
Определенный глобальный метод.
Исключения
Метод не является статическим. То есть параметр attributes
не включает Static.
-или-
Длина параметра name
равна нулю.
-или-
Элементом массива Type является null
.
name
имеет значение null
.
CreateGlobalFunctions() был вызван ранее.
Примеры
В следующем примере показано использование DefineGlobalMethod
для создания независимого от типа метода, привязанного к текущему ModuleBuilderобъекту . После построения глобального метода необходимо вызвать для CreateGlobalFunctions его завершения.
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()
Комментарии
Глобальный метод, определяемый этим методом, недоступен для использования до тех пор, пока вы не вызовете CreateGlobalFunctions.
Примечание
Начиная с платформа .NET Framework 2.0 с пакетом обновления 1 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не требуется ReflectionPermission использовать флаг . (См. раздел Проблемы безопасности при отражении.) Чтобы использовать эту функцию, приложение должно быть ориентировано на платформа .NET Framework 3.5 или более поздней версии.