有一个简化形式的命令类,如下所示:
public class Command
{
public Command(int price, Action method)
{
method.Invoke();
}
public Command(int price, Func<int> method)
{
var id = method.Invoke();
}
}
在构造函数 1 中接受int和Action- 对不返回任何内容的方法的引用。在构造函数 2Func<int>中,对返回整数的方法的引用。我还有 2 个可以传递给构造函数的方法:
public void toDosome()
{
}
public int newId()
{
return 100500;
}
接下来,我创建一个对象,没有问题:
var command = new Command(11, newId);
但是,如果相反,newId结果是toDosome:
var commandTo = new Command(1211, toDosome);
我会得到一个例外:
以下方法或属性之间的调用不明确。
同时,我无法删除任何构造函数以成功创建commandor commandTo。在这种情况下如何行动?
创建Action类型的显式委托,将目标函数传递给委托,选择函数重载的问题就会消失