次の方法で共有


ConstructorBuilder.GetParameters メソッド

このコンストラクタのパラメータを返します。

Overrides Public Function GetParameters() As ParameterInfo()
[C#]
public override ParameterInfo[] GetParameters();
[C++]
public: ParameterInfo* GetParameters() [];
[JScript]
public override function GetParameters() : ParameterInfo[];

戻り値

このコンストラクタのパラメータを表す ParameterInfo オブジェクトの配列を返します。

例外

例外の種類 条件
InvalidOperationException このコンストラクタの型で CreateType が呼び出されていません。

解説

GetParameters の使用方法については、次のコード例を参照してください。

 
' Define a constructor of the dynamic class.
Dim myConstructorBuilder As ConstructorBuilder = _ 
    myTypeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, _ 
                                    myConstructorArgs)
' Get a reference to the module that contains this constructor.
Dim myModule As [Module] = myConstructorBuilder.GetModule()
Console.WriteLine("Module Name : " + myModule.Name)
' Get the 'MethodToken' that represents the token for this constructor.
Dim myMethodToken As MethodToken = myConstructorBuilder.GetToken()
Console.WriteLine("Constructor Token is : " + myMethodToken.Token.ToString())
' Get the method implementation flags for this constructor.
Dim myMethodImplAttributes As MethodImplAttributes = _
    myConstructorBuilder.GetMethodImplementationFlags()
Console.WriteLine("MethodImplAttributes : " + myMethodImplAttributes.ToString())
' Generate IL for the method, call its base class constructor and store the arguments
' in the private field.
Dim myILGenerator3 As ILGenerator = myConstructorBuilder.GetILGenerator()
myILGenerator3.Emit(OpCodes.Ldarg_0)
Dim myConstructorInfo As ConstructorInfo = GetType(Object).GetConstructor(New Type() {})
myILGenerator3.Emit(OpCodes.Call, myConstructorInfo)
myILGenerator3.Emit(OpCodes.Ldarg_0)
myILGenerator3.Emit(OpCodes.Ldarg_1)
myILGenerator3.Emit(OpCodes.Stfld, myGreetingField)
myILGenerator3.Emit(OpCodes.Ret)
' Add a method to the type. 
myMethodBuilder = _ 
     myTypeBuilder.DefineMethod("HelloWorld", MethodAttributes.Public, Nothing, Nothing)
' Generate IL for the method.
Dim myILGenerator2 As ILGenerator = myMethodBuilder.GetILGenerator()
myILGenerator2.EmitWriteLine("Hello World from global")
myILGenerator2.Emit(OpCodes.Ret)
myModuleBuilder.CreateGlobalFunctions()
myType1 = myTypeBuilder.CreateType()

Try
   ' Get the parameters of this constructor.
   Dim myParameterInfo As ParameterInfo() = myConstructorBuilder.GetParameters()
   Dim i As Integer
   For i = 0 To myParameterInfo.Length - 1
      Console.WriteLine _ 
              ("Declaration type : " + myParameterInfo(i).Member.DeclaringType.ToString())
   Next i
Catch ex As InvalidOperationException
   Console.WriteLine("The following excpetion has occured : " + ex.Message)
Catch ex As Exception
   Console.WriteLine("The following excpetion has occured : " + ex.Message)
End Try

[C#] 
// Define a constructor of the dynamic class.
ConstructorBuilder myConstructorBuilder = myTypeBuilder.DefineConstructor(
   MethodAttributes.Public, CallingConventions.Standard, myConstructorArgs);
// Get a reference to the module that contains this constructor.
Module myModule = myConstructorBuilder.GetModule();
Console.WriteLine("Module Name : " + myModule.Name);
// Get the 'MethodToken' that represents the token for this constructor.
MethodToken myMethodToken = myConstructorBuilder.GetToken();
Console.WriteLine("Constructor Token is : " + myMethodToken.Token);
// Get the method implementation flags for this constructor.
MethodImplAttributes myMethodImplAttributes = myConstructorBuilder.GetMethodImplementationFlags();
Console.WriteLine("MethodImplAttributes : "  + myMethodImplAttributes);
// Generate IL for the method, call its base class constructor and store the arguments
// in the private field.
ILGenerator myILGenerator3 = myConstructorBuilder.GetILGenerator();
myILGenerator3.Emit(OpCodes.Ldarg_0);
ConstructorInfo myConstructorInfo = typeof(Object).GetConstructor(new Type[0]);
myILGenerator3.Emit(OpCodes.Call, myConstructorInfo);
myILGenerator3.Emit(OpCodes.Ldarg_0);
myILGenerator3.Emit(OpCodes.Ldarg_1);
myILGenerator3.Emit(OpCodes.Stfld, myGreetingField);
myILGenerator3.Emit(OpCodes.Ret);
// Add a method to the type.
myMethodBuilder = myTypeBuilder.DefineMethod
   ("HelloWorld",MethodAttributes.Public,null,null);
// Generate IL for the method.
ILGenerator myILGenerator2 = myMethodBuilder.GetILGenerator();
myILGenerator2.EmitWriteLine("Hello World from global");
myILGenerator2.Emit(OpCodes.Ret);
myModuleBuilder.CreateGlobalFunctions();
myType1 = myTypeBuilder.CreateType();

try
{
   // Get the parameters of this constructor.
   ParameterInfo[] myParameterInfo = myConstructorBuilder.GetParameters();
   for(int i =0 ; i < myParameterInfo.Length; i++)
   {
      Console.WriteLine("Declaration type : " + myParameterInfo[i].Member.DeclaringType);
   }
}
catch(InvalidOperationException ex)
{
   Console.WriteLine("The following excpetion has occured : "+ex.Message);
}
catch(Exception ex)
{
   Console.WriteLine("The following excpetion has occured : "+ex.Message);
}

[C++] 
// Define a constructor of the dynamic class.
ConstructorBuilder* myConstructorBuilder = myTypeBuilder->DefineConstructor(
   MethodAttributes::Public, CallingConventions::Standard, myConstructorArgs);
// Get a reference to the module that contains this constructor.
Module* myModule = myConstructorBuilder->GetModule();
Console::WriteLine(S"Module Name : {0}", myModule->Name);
// Get the 'MethodToken' that represents the token for this constructor.
MethodToken myMethodToken = myConstructorBuilder->GetToken();
Console::WriteLine(S"Constructor Token is : {0}", __box(myMethodToken.Token));
// Get the method implementation flags for this constructor.
MethodImplAttributes myMethodImplAttributes = myConstructorBuilder->GetMethodImplementationFlags();
Console::WriteLine(S"MethodImplAttributes : {0}", __box(myMethodImplAttributes));
// Generate IL for the method, call its base class constructor and store the arguments
// in the private field.
ILGenerator* myILGenerator3 = myConstructorBuilder->GetILGenerator();
myILGenerator3->Emit(OpCodes::Ldarg_0);
ConstructorInfo* myConstructorInfo = __typeof(Object)->GetConstructor(new Type*[0]);
myILGenerator3->Emit(OpCodes::Call, myConstructorInfo);
myILGenerator3->Emit(OpCodes::Ldarg_0);
myILGenerator3->Emit(OpCodes::Ldarg_1);
myILGenerator3->Emit(OpCodes::Stfld, myGreetingField);
myILGenerator3->Emit(OpCodes::Ret);
// Add a method to the type.
myMethodBuilder = myTypeBuilder->DefineMethod
   (S"HelloWorld",MethodAttributes::Public,0,0);
// Generate IL for the method.
ILGenerator* myILGenerator2 = myMethodBuilder->GetILGenerator();
myILGenerator2->EmitWriteLine(S"Hello World from global");
myILGenerator2->Emit(OpCodes::Ret);
myModuleBuilder->CreateGlobalFunctions();
myType1 = myTypeBuilder->CreateType();

try
{
   // Get the parameters of this constructor.
   ParameterInfo* myParameterInfo[] = myConstructorBuilder->GetParameters();
   for(int i =0 ; i < myParameterInfo->Length; i++)
   {
      Console::WriteLine(S"Declaration type : {0}", myParameterInfo[i]->Member->DeclaringType);
   }
}
catch(InvalidOperationException* ex)
{
   Console::WriteLine(S"The following excpetion has occured : {0}", ex->Message);
}
catch(Exception* ex)
{
   Console::WriteLine(S"The following excpetion has occured : {0}", ex->Message);
}

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

ConstructorBuilder クラス | ConstructorBuilder メンバ | System.Reflection.Emit 名前空間