Я разрабатываю селеновые рамки в c #. Классы страниц создаются с использованием фабричного дизайна, чтобы скрыть логику создания экземпляров, и я хотел бы иметь возможность создавать экземпляры класса, используя
var myPageClass = HelperSelenium.Instance(MyPageClass)
вместо var myPageClass = MyPageClass.Instance(driver)
Я пытался создать универсальную функцию в классе HelperSelenium, но пока не могу полностью понять, как работают универсальные функции.
Пример класса PageObject (обратите внимание, я использую метод Instance для создания экземпляра класса
public class HomePage : BasePage
{
private HomePage(IWebDriver driver, CountryEnum enum) : base(driver) { }
private static HomePage homePage { get; set; }
public static HomePage Instance(IWebDriver driver, CountryEnum enum)
{
switch (enum)
{
case CountryEnum.Sweden:
HomePage = new HomePage_SWE(driver);
break;
case CountryEnum.Germany:
HomePage = new HomePage_GER(driver);
break;
case CountryEnum.Italy:
HomePage = new HomePage_ITA(driver);
break;
default:
HomePage = new HomePage_UK(driver);
break;
}
return homePage;
}
...
}
public T InstancePage<T>() where T : BasePage
{
return (T).Instance(WebDriver, CountryEnum.Sweden);
}
Error CS0119 'T' is a type, which is not valid in the given context InfrastructureSelenium C:\testSelenium\Infrastructure\Helper\HelperSelenium.cs 140 Active
Error CS0119 'T' is a type parameter, which is not valid in the given context InfrastructureSelenium C:\testSelenium\Infrastructure\Helper\HelperSelenium.cs 140 Active