代码之家  ›  专栏  ›  技术社区  ›  joe

参数和调用处理程序的问题

  •  0
  • joe  · 技术社区  · 10 年前

    我在打电话 Invoke 以数组作为参数。
    问题是 援引 使用 params -如果我的阵列是3个元素长, 援引 尝试调用具有3个参数的方法 相反 使用一个ARRAY参数调用方法:

    private void something(Control[] dataDropControls) {
       // ...
       this.Invoke(new Action<Control[]>(initControls), dataDropControls);
    }
    
    private void initControls(Control[] controls) {
        // ...
    }
    

    ( This question 没有回答我的问题,因为参数数组是在调用函数中构建的。在我的情况下,该函数获取已构建的数组。)

    Q: 我怎么打电话 援引 以便它可以用一个数组参数调用该方法?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Lee    10 年前

    假设 Invoke 尝试动态调用委托,您应该能够将输入数组包装在另一个

    private void Invoke(Action<Control[]> act, Control[] elements)
    {
        act.DynamicInvoke(new object[] { elements });
    }
    

    这个问题是由阵列协方差引起的,因为您可以

    Control[] elements = ...
    object[] arr = elements;
    

    所以输入 Control[] 可以直接传递给 援引 ,这将导致每个数组元素分别传递给该方法。