我怎样才能使这个重载的参数方法起作用?
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)
{
...
}
我有以下代码:
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) { ... }