首页 > 解决方案 > Invoke 需要一个参数

问题描述

public static void WaitUntilElementVisible(Action<string> preAction = null) 
{
      preAction?.Invoke();
}

static void Main(string[] args) 
{
    WaitUntilElementVisible((str) => PanelHandler("in"));
}

public static void PanelHandler(string className) 
{
   // do something
}

PanelHandler("in")如果方法内不为空,我想执行WaitUntilElementVisible()。然而,Invoke()期望一个字符串。但奇怪的是,当我这样做时,我已经给了它一个字符串,我WaitUntilElementVisible(() => PanelHandler("in"));怎样才能让 Invoke 使用我通过 lambda 传递的字符串?

我想以调用withWaitUntilElementVisible()的方式 WaitUntilElementVisible()调用。PanelHandler"in"

标签: c#.net

解决方案


问题是由于您声明了 WaitUntilElementVisible,声明

public static void WaitUntilElementVisible(Action<string> preAction = null)

声明一个接受字符串参数的委托,也就是说,它期望对 WaitUntilElementVisible 的调用如下所示:

WaitUntilElementVisible(someString => PanelHandler(someString));

在 WaitUntilElementVisible 将字符串提供给您的委托的情况下,这将很有用。

你想要的是 WaitUntilElementVisible 的声明

public static void WaitUntilElementVisible(Action preAction = null)

这意味着它需要一个不带参数的委托。


推荐阅读