This documentation is archived and is not being maintained.

MethodBuilder.GetParameters Method

Returns the parameters of this method.

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

Return Value

An array of ParameterInfo objects that represent the parameters of the method.

Exceptions

Exception Type Condition
NotSupportedException This method is not currently supported. Retrieve the method using GetMethod and call GetParameters on the returned MethodInfo.

Example

[Visual Basic, C#, C++] The code sample below illustrates the use of GetParameters to discover information on the parameters passed to a dynamically-generated method.

[Visual Basic] 
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] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

MethodBuilder Class | MethodBuilder Members | System.Reflection.Emit Namespace

Show: