ModuleBuilder.DefineGlobalMethod メソッド
グローバル メソッドを定義します。
オーバーロードの一覧
名前、属性、戻り値の型、およびパラメータ型を指定して、グローバル メソッドを定義します。
[Visual Basic] Overloads Public Function DefineGlobalMethod(String, MethodAttributes, Type, Type()) As MethodBuilder
[C#] public MethodBuilder DefineGlobalMethod(string, MethodAttributes, Type, Type[]);
[C++] public: MethodBuilder* DefineGlobalMethod(String*, MethodAttributes, Type*, Type[]);
[JScript] public function DefineGlobalMethod(String, MethodAttributes, Type, Type[]) : MethodBuilder;
名前、属性、呼び出し規約、戻り値の型、およびパラメータ型を指定して、グローバル メソッドを定義します。
[Visual Basic] Overloads Public Function DefineGlobalMethod(String, MethodAttributes, CallingConventions, Type, Type()) As MethodBuilder
[C#] public MethodBuilder DefineGlobalMethod(string, MethodAttributes, CallingConventions, Type, Type[]);
使用例
[Visual Basic, C#, C++] 次のコード例は、 DefineGlobalMethod を使用して、現在の ModuleBuilder に結び付けられた、型に依存しないメソッドを作成する方法を示しています。グローバル メソッドを作成した後、これを完了するためには、 CreateGlobalFunctions を呼び出す必要があります。
[Visual Basic, C#, C++] メモ ここでは、DefineGlobalMethod のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。
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()
[C#]
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();
[C++]
AppDomain* currentDomain;
AssemblyName* myAssemblyName;
MethodBuilder* myMethodBuilder=0;
ILGenerator* myILGenerator;
// Get the current application domain for the current thread.
currentDomain = AppDomain::CurrentDomain;
myAssemblyName = new AssemblyName();
myAssemblyName->Name = S"TempAssembly";
// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = currentDomain->DefineDynamicAssembly(
myAssemblyName,
AssemblyBuilderAccess::RunAndSave);
// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder->DefineDynamicModule(S"TempModule");
// Define a global method in the 'TempModule' module.
myMethodBuilder = myModuleBuilder->DefineGlobalMethod(
S"MyMethod1",
static_cast<MethodAttributes>(MethodAttributes::Static | MethodAttributes::Public),
0,
0);
myILGenerator = myMethodBuilder->GetILGenerator();
myILGenerator->EmitWriteLine(S"Hello World from global method.");
myILGenerator->Emit(OpCodes::Ret);
// Fix up the 'TempModule' module .
myModuleBuilder->CreateGlobalFunctions();
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
参照
ModuleBuilder クラス | ModuleBuilder メンバ | System.Reflection.Emit 名前空間