![](/img/trans.png)
[英]this.Invoke throws cannot convert from 'method group' to 'System.Delegate'
[英]How do I fix 'compiler error - cannot convert from method group to System.Delegate'?
public MainWindow()
{
CommandManager.AddExecutedHandler(this, ExecuteHandler);
}
void ExecuteHandler(object sender, ExecutedRoutedEventArgs e)
{
}
错误 1 参数 2:无法从“方法组”转换为“System.Delegate”
我猜有多个 ExecuteHandler 具有不同的签名。 只需将您的处理程序转换为您想要的版本:
CommandManager.AddExecuteHandler(this, (Action<object,ExecutedRoutedEventArgs>)ExecuteHandler);
您不能直接将“方法”作为参数传递,您需要传递表达式。 您可以将方法包装到委托中:
CommandManager.AddExecutedHandler(this, new ExecutedRoutedEventHandler(ExecuteHandler));
CommandManager.AddExecutedHandler(this, (Action<object,ExecutedRoutedEventArgs>) ExecuteHandler);
或者成为lambda - 这是我个人的最爱,因为你不需要记住一个委托名称:
CommandManager.AddExecutedHandler(this, (s, e) => ExecuteHandler(s, e));
由于完全不同的问题,我收到此错误。
var engine = new Ingest(GetOperationType, GetSqlConnection);
private static SqlConnection GetSqlConnection(string instanceCode, string defaultDB)
=> new SqlConnection($"Server={InstanceMap[instanceCode]};Database={defaultDB};Trusted_Connection=True;");
private static Type GetOperationType(string operationName)
=> Type.GetType(typeof(BaseOperation).Namespace + "." + operationName + ", ConditioningEngine.EnginePlugins");
'new Ingest...' 的两个参数是不同类型的委托。 GetOperationType 参数没有问题,而 GetSqlConnection 出现“无法从方法组转换”错误。
在尝试其他答案中提到的转换技巧后,错误更改为 System.Data.SqlClient 未引用。 解决参考问题后,我可以摆脱演员阵容。 也就是说,错误是错误的。 转换技巧对让我看到真正的错误很有用,但转换本身并不是必需的。 似乎真正的错误几乎可以是任何事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.