在动作委托中允许不同的参数
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!");
我正在尝试声明一个允许使用不同参数设置函数的动作委托。
这是我的最小示例: 我有这样不同的 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!");