次の方法で共有


MethodBuilder.GetParameters メソッド

このメソッドのパラメータを返します。

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

戻り値

このメソッドのパラメータを表す ParameterInfo オブジェクトの配列。

例外

例外の種類 条件
NotSupportedException このメソッドは、現在サポートされていません。 GetMethod を使用してメソッドを取得し、返された MethodInfo に対して GetParameters を呼び出します。

使用例

[Visual Basic, C#, C++] GetParameters を使用して、動的に生成したメソッドに渡されるパラメータに関する情報を取得する方法については、次のコード例を参照してください。

 
Dim myType1 As TypeBuilder = myModBuilder.DefineType("MyMathFunctions", _
                      TypeAttributes.Public)

Dim myMthdBuilder As MethodBuilder = myType1.DefineMethod("AddToRefValue", _
          MethodAttributes.Public, Nothing, _
          New Type() {Type.GetType("System.Int32&"), GetType(Integer)})

Dim myParam1 As ParameterBuilder = myMthdBuilder.DefineParameter(1, _
                  ParameterAttributes.Out, "thePool")

Dim myParam2 As ParameterBuilder = myMthdBuilder.DefineParameter(2, _
                  ParameterAttributes.In, "addMeToPool")

' Create body via ILGenerator here, and complete the type.

Dim myParams As ParameterInfo() = myMthdBuilder.GetParameters()

Console.WriteLine("Method: {0}", myMthdBuilder.Name)

Dim myParam As ParameterInfo
For Each myParam In  myParams
   Console.WriteLine("------- Parameter: {0} {1} at pos {2}, with attribute {3}", _
          myParam.ParameterType, myParam.Name, myParam.Position, _
          myParam.Attributes.ToString())
Next myParam


[C#] 

    TypeBuilder myType1 = myModBuilder.DefineType("MyMathFunctions",
                    TypeAttributes.Public);

    MethodBuilder myMthdBuilder = myType1.DefineMethod("AddToRefValue",
                    MethodAttributes.Public,
                    typeof(void),
                    new Type[] { Type.GetType("System.Int32&"),
                             typeof(int) });
    ParameterBuilder myParam1 = myMthdBuilder.DefineParameter(1,
                    ParameterAttributes.Out,
                    "thePool");
    ParameterBuilder myParam2 = myMthdBuilder.DefineParameter(2,
                    ParameterAttributes.In,
                    "addMeToPool");

    // Create body via ILGenerator here, and complete the type.

    ParameterInfo[] myParams = myMthdBuilder.GetParameters();

    Console.WriteLine("Method: {0}", myMthdBuilder.Name);

    foreach (ParameterInfo myParam in myParams)
        {
       Console.WriteLine("------- Parameter: {0} {1} at pos {2}, with attribute {3}", 
                 myParam.ParameterType, myParam.Name, myParam.Position,
                 myParam.Attributes.ToString());

        }
    

[C++] 
TypeBuilder*  myType1 = myModBuilder->DefineType(S"MyMathFunctions",
   TypeAttributes::Public);

Type* temp0 [] = {Type::GetType(S"System.Int32&"), __typeof(int)};
MethodBuilder*  myMthdBuilder = myType1->DefineMethod(
   S"AddToRefValue",
   MethodAttributes::Public,
   __typeof(void),
   temp0);
ParameterBuilder*  myParam1 = myMthdBuilder->DefineParameter(
   1,
   ParameterAttributes::Out,
   S"thePool");
ParameterBuilder*  myParam2 = myMthdBuilder->DefineParameter(
   2,
   ParameterAttributes::In,
   S"addMeToPool");

// Create body via ILGenerator here, and complete the type.

ParameterInfo*  myParams[] = myMthdBuilder->GetParameters();

Console::WriteLine(S"Method: {0}", myMthdBuilder->Name);

System::Collections::IEnumerator* myEnum = myParams->GetEnumerator();
while (myEnum->MoveNext()) {
   ParameterInfo* myParam = __try_cast<ParameterInfo*>(myEnum->Current);
   Console::WriteLine(S"------- Parameter: {0} {1} at pos {2}, with attribute {3}",
      myParam->ParameterType, myParam->Name, __box(myParam->Position), __box(myParam->Attributes));
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

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

参照

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