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
- Исходный код:
- 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.
–или–
Элемент в массиве Typenull.
name равно null.
CreateGlobalFunctions() ранее был вызван.
Примеры
В следующем примере кода показано использование DefineGlobalMethod метода, связанного с текущим ModuleBuilderтипом, независимо от типа. После создания глобального метода 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.
Применяется к
DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- 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.
–или–
Элемент в массиве Typenull.
name равно null.
Метод CreateGlobalFunctions() был вызван ранее.
Комментарии
Эта перегрузка предоставляется для конструкторов управляемых компиляторов.
Вы не можете использовать глобальный метод, который определяет этот метод, пока не вызовете CreateGlobalFunctions.
Применяется к
DefineGlobalMethod(String, MethodAttributes, Type, Type[])
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- ModuleBuilder.cs
- Исходный код:
- 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
–или–
Элемент в массиве Typenull.
name равно null.
CreateGlobalFunctions() ранее был вызван.
Примеры
В следующем примере показано использование DefineGlobalMethod метода, связанного с текущим ModuleBuilder, независимо от типа. После создания глобального метода 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.