我正在尝试声明一个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) { ... }
}
感谢您帮助我!
答案 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!");