【问题标题】:How to get the ParameterInfo of a function with variable number of params?如何获取参数数量可变的函数的 ParameterInfo?
【发布时间】:2011-09-21 08:13:38
【问题描述】:

如何获取参数数量可变的函数的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);
         }
     }
     ..........
}

提前感谢您帮助我。

阿诺

【问题讨论】:

    标签: c# reflection parameterinfo


    【解决方案1】:

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

    【讨论】:

    • 你是说不能知道 o1 和 o2 是否是 out 参数,因为我只能使用 params 对象吗?
    • @BobyFish - 不。我试图弄清楚你想要做什么,实际上, MyFunction(object o1, out object o2) 甚至没有编译 :-)
    • 哦,你很好!我明白我的问题在哪里。感谢您的回答西蒙。
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    相关资源
    最近更新 更多