ModuleBuilder.DefineGlobalMethod ModuleBuilder.DefineGlobalMethod ModuleBuilder.DefineGlobalMethod ModuleBuilder.DefineGlobalMethod Method

定義

グローバル メソッドを定義します。Defines a global method.

オーバーロード

DefineGlobalMethod(String, MethodAttributes, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, Type, Type[])

名前、属性、戻り値の型、およびパラメーター型を指定して、グローバル メソッドを定義します。Defines a global method with the specified name, attributes, return type, and parameter types.

DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[])

名前、属性、呼び出し規約、戻り値の型、およびパラメーター型を指定して、グローバル メソッドを定義します。Defines a global method with the specified name, attributes, calling convention, return type, and parameter types.

DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])

名前、属性、呼び出し規約、戻り値の型、戻り値の型のカスタム修飾子、パラメーター型、およびパラメーター型のカスタム修飾子を指定して、グローバル メソッドを定義します。Defines a global method with the specified name, attributes, calling convention, return type, custom modifiers for the return type, parameter types, and custom modifiers for the parameter types.

DefineGlobalMethod(String, MethodAttributes, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, Type, Type[])

名前、属性、戻り値の型、およびパラメーター型を指定して、グローバル メソッドを定義します。Defines a global method with the specified name, attributes, return type, and parameter types.

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);
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 String String String

メソッドの名前。The name of the method. name に埋め込み null 値を含めることはできません。name cannot contain embedded nulls.

attributes
MethodAttributes MethodAttributes MethodAttributes MethodAttributes

メソッドの属性。The attributes of the method. attributes には Static を含める必要があります。attributes must include Static.

returnType
Type Type Type Type

メソッドの戻り値の型。The return type of the method.

parameterTypes
Type[]

メソッドのパラメーター型。The types of the method's parameters.

戻り値

定義されたグローバル メソッド。The defined global method.

例外

メソッドは静的ではありません。The method is not static. つまり、attributesStatic が含まれていません。That is, attributes does not include Static.

- または --or- name の長さが 0 です。The length of name is zero - または --or- Type 配列の要素が null です。An element in the Type array is null.

次の例は、を使用DefineGlobalMethodして、現在ModuleBuilderのに関連付けられている型に依存しないメソッドを作成する方法を示しています。The following example illustrates the use of DefineGlobalMethod to create a type-independent method tied to the current ModuleBuilder. グローバルメソッドを作成したらCreateGlobalFunctions 、を完了するためにを呼び出す必要があります。After building the global method, CreateGlobalFunctions must be called in order to complete it.

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呼び出すまで使用できません。The global method that this method defines is not usable until you call CreateGlobalFunctions.

注意

以降では.NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1、このメンバーはフラグをReflectionPermission使用するReflectionPermissionFlag.ReflectionEmit必要がなくなりました。Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (「リフレクション出力のセキュリティの問題」を参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象とする必要があります。(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[])

名前、属性、呼び出し規約、戻り値の型、およびパラメーター型を指定して、グローバル メソッドを定義します。Defines a global method with the specified name, attributes, calling convention, return type, and parameter types.

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);
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 String String String

メソッドの名前。The name of the method. name に埋め込み null 値を含めることはできません。name cannot contain embedded nulls.

attributes
MethodAttributes MethodAttributes MethodAttributes MethodAttributes

メソッドの属性。The attributes of the method. attributes には Static を含める必要があります。attributes must include Static.

callingConvention
CallingConventions CallingConventions CallingConventions CallingConventions

メソッドの呼び出し規則。The calling convention for the method.

returnType
Type Type Type Type

メソッドの戻り値の型。The return type of the method.

parameterTypes
Type[]

メソッドのパラメーター型。The types of the method's parameters.

戻り値

定義されたグローバル メソッド。The defined global method.

例外

メソッドは静的ではありません。The method is not static. つまり、attributesStatic が含まれていません。That is, attributes does not include Static.

または-or- Type 配列の要素が null です。An element in the Type array is null.

次のDefineGlobalMethodコードサンプルは、を使用して、現在ModuleBuilderのに関連付けられている型に依存しないメソッドを作成する方法を示しています。The following code sample illustrates the use of DefineGlobalMethod to create a type-independent method tied to the current ModuleBuilder. グローバルメソッドを作成したらCreateGlobalFunctions 、を完了するためにを呼び出す必要があります。After building the global method, CreateGlobalFunctions must be called in order to complete it.

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まで、このメソッドで定義されているグローバルメソッドを使用することはできません。You cannot use the global method that this method defines until you call CreateGlobalFunctions.

注意

以降では.NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1、このメンバーはフラグをReflectionPermission使用するReflectionPermissionFlag.ReflectionEmit必要がなくなりました。Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (「リフレクション出力のセキュリティの問題」を参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象とする必要があります。(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][]) DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type[], Type[], Type[], Type[][], Type[][])

名前、属性、呼び出し規約、戻り値の型、戻り値の型のカスタム修飾子、パラメーター型、およびパラメーター型のカスタム修飾子を指定して、グローバル メソッドを定義します。Defines a global method with the specified name, attributes, calling convention, return type, custom modifiers for the return type, parameter types, and custom modifiers for the parameter types.

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);
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 String String String

メソッドの名前。The name of the method. name に null 文字を埋め込むことはできません。name cannot contain embedded null characters.

attributes
MethodAttributes MethodAttributes MethodAttributes MethodAttributes

メソッドの属性。The attributes of the method. attributes には Static を含める必要があります。attributes must include Static.

callingConvention
CallingConventions CallingConventions CallingConventions CallingConventions

メソッドの呼び出し規則。The calling convention for the method.

returnType
Type Type Type Type

メソッドの戻り値の型。The return type of the method.

requiredReturnTypeCustomModifiers
Type[]

IsConstIsBoxed などの、戻り値の型の必須のカスタム修飾子を表す型の配列。An array of types representing the required custom modifiers for the return type, such as IsConst or IsBoxed. 戻り値の型が必須のカスタム修飾子を持たない場合は、null を指定します。If the return type has no required custom modifiers, specify null.

optionalReturnTypeCustomModifiers
Type[]

IsConstIsBoxed などの、戻り値の型のオプションのカスタム修飾子を表す型の配列。An array of types representing the optional custom modifiers for the return type, such as IsConst or IsBoxed. 戻り値の型に省略可能のカスタム修飾子がない場合は、null を指定します。If the return type has no optional custom modifiers, specify null.

parameterTypes
Type[]

メソッドのパラメーター型。The types of the method's parameters.

requiredParameterTypeCustomModifiers
Type[][]

型の配列の配列。An array of arrays of types. 型の各配列は、グローバル メソッドの対応するパラメーターの必須のカスタム修飾子を表します。Each array of types represents the required custom modifiers for the corresponding parameter of the global method. 特定の引数に必須のカスタム修飾子がない場合は、型の配列の代わりに null を指定します。If a particular argument has no required custom modifiers, specify null instead of an array of types. グローバル メソッドに引数がない場合、またはどの引数にも必須のカスタム修飾子がない場合は、配列の配列の代わりに null を指定します。If the global method has no arguments, or if none of the arguments have required custom modifiers, specify null instead of an array of arrays.

optionalParameterTypeCustomModifiers
Type[][]

型の配列の配列。An array of arrays of types. 型の各配列は、対応するパラメーターのオプションのカスタム修飾子を表します。Each array of types represents the optional custom modifiers for the corresponding parameter. 特定の引数にオプションのカスタム修飾子がない場合は、型の配列の代わりに null を指定します。If a particular argument has no optional custom modifiers, specify null instead of an array of types. グローバル メソッドに引数がない場合、またはどの引数にもオプションのカスタム修飾子がない場合は、配列の配列の代わりに null を指定します。If the global method has no arguments, or if none of the arguments have optional custom modifiers, specify null instead of an array of arrays.

戻り値

定義されたグローバル メソッド。The defined global method.

例外

メソッドは静的ではありません。The method is not static. つまり、attributesStatic が含まれていません。That is, attributes does not include Static.

- または --or- Type 配列の要素が null です。An element in the Type array is null.

注釈

このオーバーロードは、マネージコンパイラのデザイナーに対して用意されています。This overload is provided for designers of managed compilers.

を呼び出すCreateGlobalFunctionsまで、このメソッドで定義されているグローバルメソッドを使用することはできません。You cannot use the global method that this method defines until you call CreateGlobalFunctions.

注意

以降では.NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1、このメンバーはフラグをReflectionPermission使用するReflectionPermissionFlag.ReflectionEmit必要がなくなりました。Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (「リフレクション出力のセキュリティの問題」を参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象とする必要があります。(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

適用対象