在动作委托中允许不同的参数

Allow different parameters in action delegate

我正在尝试声明一个允许使用不同参数设置函数的动作委托。

这是我的最小示例: 我有这样不同的 void 函数:

private void Function1(string Parameter) { ... }
private void Function2(int Parameter) { ... }

我想在同一个构造函数中传递这些函数。但是这样是不行的。

Main
{
  AClass a = new AClass(Function1);
  AClass b = new AClass(Function2);
}

我需要如何定义我的动作(对象不工作)- 我不想让我的 consturcor 过载!

public class AClass
{
  public AClass(Action<???> Function) { ... }
}

谢谢你帮助我!

通常你会这样做:

public class AClass<T>
{
    public AClass(Action<T> Function) { ... }
}

...否则您将重载构造函数。

如果您有其他想法,您需要提供更多代码来向我们展示您想要做什么。

您可以使您的 class 通用:

public class AClass<T>
{
    private Action<T> _action;

    public AClass(Action<T> function) 
    {
        _action = function;
    }

    public void Exec(T parameter)
    {
        _action(parameter);
    }
}

private void MyMethod(int param)
{
    // ....
}


var myClass = new AClass<int>(MyMethod);

myClass.Exec(10);

private void MyMethod(string param)
{
    // ....
}


var myClass = new AClass<string>(MyMethod);

myClass.Exec("Hello world!");