如何使这个重载的param方法工作?

时间:2016-03-10 10:25:25

标签: c# overloading params

我有以下代码:

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");时,会调用第一个方法。但我想调用第二种方法。

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

3 个答案:

答案 0 :(得分:2)

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

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

这只与第二种方法相匹配。

答案 1 :(得分:1)

你最容易做的就是不要改变任何东西,只需用命名参数调用你的方法,这样就没有歧义:

    // 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);

答案 2 :(得分:1)

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

  

public static void AssertTdsExist(此RemoteWebDriver驱动程序,StringBuilder id,params string [] tds)   {       ...   }

     

public static void AssertTdsExist(此RemoteWebDriver驱动程序,params string [] tds)   {       ...   }