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.

Применяется к