如何获取具有可变数量的参数的函数的ParameterInfo?

时间:2011-06-23 15:24:47

标签: c# reflection parameterinfo

如何获取具有可变参数数量的函数的ParameterInfo? 问题是当我调用方法

MyFunction(object o1, out object o2);

我可以获取sendData的parameterInfo但不能获取o1和o2对象。

protected object[] MyFunction(params object[] sendData)
{
     StackTrace callStack = new StackTrace(0, false);
     StackFrame callingMethodFrame = callStack.GetFrame(0);
     MethodBase callingMethod = callingMethodFrame.GetMethod();
     ParameterInfo[] parametersInfo = callingMethod.GetParameters();

     List<object> inParams = new List<object>();
     List<object> outParams = new List<object>();

     for (int i = 0; i < sendData.Length; i++)
     {
         object value = sendData[i];
         ParameterInfo info = parametersInfo[parametersInfo.Length - sendData.Length + i];

         if (info.IsOut)
         {
              outParams.Add(value);
         }
         else
         {
              inParams.Add(value);
         }
     }
     ..........
}

先谢谢你的帮助。

阿诺

1 个答案:

答案 0 :(得分:2)

'params'只是C#的语法糖。实际上,在元数据.NET级别,只有一个名为“sendData”的参数具有特定的"ParamArray"属性集。