我怎样才能使这个重载的参数方法起作用?

How can I make this overloaded param method work?

我有以下代码:

public static void AssertTdsExist(this RemoteWebDriver driver, string id, params string[] tds)
{
    ...
}

public static void AssertTdsExist(this RemoteWebDriver driver, params string[] tds)
{
    ...
}

现在,当我执行 Driver.AssertTdsExist("pol_imp"); 时,将调用第一个方法。但是我想调用第二种方法。

我应该如何更改此代码才能使其正常工作?

您可以在字符串数组中提供参数:

Driver.AssertTdsExist(new string[] { "pol_imp" });

这只匹配第二种方法。

您可以做的最简单的事情就是根本不更改任何内容,只需使用命名参数调用您的方法,这样就不会出现歧义:

    // assuming you retrieve your params from somewhere
    var tdsArray = new string[] {"pol_imp"};
    var myDriver = GetDriver();
    var myId = GetId();

    myDriver.AssertTdsExist(tds: tdsArray);
    // or this, to call the other method
    myDriver.AssertTdsExist(tds: tdsArray, id: myId);

您可以将字符串 Id 更改为 StringBuilder,这样它就会彼此不同...像这样

public static void AssertTdsExist(this RemoteWebDriver driver, StringBuilder id, params string[] tds) { ... }

public static void AssertTdsExist(this RemoteWebDriver driver, params string[] tds) { ... }