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

时间:2016-03-17 08:30:58

标签: c# .net casting delegates action

我正在尝试声明一个action-delegate,它允许使用不同的paremeter设置函数。

这是我的最小例子: 我有这样的虚函数:

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

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

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

我如何定义我的Action(对象不起作用) - 我不想重载我的consturcor!

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

感谢您帮助我!

2 个答案:

答案 0 :(得分:2)

通常你会这样做:

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

...或者你会重载构造函数。

如果您还有其他想法,则需要提供更多代码以向我们展示您想要做的事情。

答案 1 :(得分:1)

你可以让你的班级通用:

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!");