Как получить ParameterInfo функции с переменным количеством параметров? - PullRequest
0 голосов
/ 23 июня 2011

Как получить ParameterInfo функции с переменным количеством параметров?Проблема в том, что когда я вызываю метод

MyFunction(object o1, out object o2);

, я могу получить параметрInfo объекта sendData, но не объект 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 Ответ

2 голосов
/ 23 июня 2011

'params' - это синтаксический сахар C #. На самом деле, на уровне метаданных .NET существует только один параметр с именем «sendData» с определенным атрибутом «ParamArray» .

...