MethodBuilder.GetParameters 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回此方法的参数。
public:
override cli::array <System::Reflection::ParameterInfo ^> ^ GetParameters();
public override System.Reflection.ParameterInfo[] GetParameters ();
override this.GetParameters : unit -> System.Reflection.ParameterInfo[]
Public Overrides Function GetParameters () As ParameterInfo()
返回
表示此方法的参数的 ParameterInfo
对象数组。
例外
目前尚不支持此方法。 使用 GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) 检索此方法,并在返回的 MethodInfo 上调用 GetParameters
。
示例
下面的代码示例演示了如何使用 GetParameters
来发现有关传递给动态生成方法的参数的信息。
TypeBuilder^ myType1 = myModBuilder->DefineType( "MyMathFunctions", TypeAttributes::Public );
array<Type^>^temp0 = {Type::GetType( "System.Int32&" ),int::typeid};
MethodBuilder^ myMthdBuilder = myType1->DefineMethod( "AddToRefValue", MethodAttributes::Public, void::typeid, temp0 );
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.
array<ParameterInfo^>^myParams = myMthdBuilder->GetParameters();
Console::WriteLine( "Method: {0}", myMthdBuilder->Name );
for each (ParameterInfo^ myParam in myParams)
{
Console::WriteLine("------- Parameter: {0} {1} at pos {2}, with attribute {3}",
myParam->ParameterType, myParam->Name, myParam->Position,
myParam->Attributes.ToString());
}
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());
}
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