如何做这样的事情。因此,情况是我在另一个平台(移动版,桌面版)中有2种“ DoLogin”方法
我想使代码更具可读性,看起来像这样
例如。
如果我想登录到桌面版本。
webDriver.Desktop.Dologin(accountModel)
如果我想登录到移动版本。
webDriver.Mobile.DoLogin(accountModel)
这是我目前拥有的。
public static class Desktop
{
public static void DoLogin(this ChromeDriver webDriver, AccountModel account)
{
}
}
public static class Mobile
{
public static void DoLogin(this ChromeDriver webDriver, AccountModel account)
{
}
}
编辑
这是我目前正在组织的工作。
public static class Desktop
{
public static void DesktopDoLogin(this ChromeDriver webDriver, AccountModel account)
{
}
}
public static class Mobile
{
public static void MobileDoLogin(this ChromeDriver webDriver, AccountModel account)
{
}
}
每当我调用一个方法时,请说台式机。
webDriver.DesktopDoLogin(account)
或
webDriver.MobileDoLogin(account)
我想这很重要。
答案 0 :(得分:0)
我个人不喜欢使用扩展方法。这是一个偏好。我很可能会如下实现它。我以前从未使用过Selenium,所以我不确定WebDriver
是/实现了什么接口,但是您可以了解该模式的要旨。
public interface IPlatform
{
void Login<T>(T model);
}
public class Desktop : IPlatform
{
private readonly WebDriver _webDriver;
public Desktop(WebDriver driver)
{
_webDriver = driver;
}
public void Login<T>(T model)
{
// do login here
}
}
// usage
IPlatform desktop = new Desktop(/*chromedriver*/); // or inject
desktop.Login<AccountModel>(model);
答案 1 :(得分:0)
在我看来,您可以得到这个:
void Main()
{
var webDriver = new ChromeDriver();
webDriver.Desktop.DoLogin(new AccountModel());
webDriver.Mobile.DoLogin(new AccountModel());
}
这样做:
public interface IDoLogin
{
void DoLogin(AccountModel account);
}
public class Desktop : IDoLogin
{
private ChromeDriver _webDriver;
public Desktop(ChromeDriver webDriver)
{
_webDriver = webDriver;
}
public void DoLogin(AccountModel account) { }
}
public class Mobile : IDoLogin
{
private ChromeDriver _webDriver;
public Mobile(ChromeDriver webDriver)
{
_webDriver = webDriver;
}
public void DoLogin(AccountModel account) { }
}
public class ChromeDriver
{
public Desktop Desktop;
public Mobile Mobile;
public ChromeDriver()
{
this.Desktop = new Desktop(this);
this.Mobile = new Mobile(this);
}
}
答案 2 :(得分:0)
您可以使用诸如此类的静态空隙轻松地做到这一点:-
Public class desktop {
Public static void DoLogin(AccountModel val){
//code for desktop
}
}
Public class mobile {
Public static void DoLogin(AccountModel val){
//code for mobile
}
}
Public class webDriver{
Public static desktop Desktop;
Public static mobile Mobile;
}
//usage
webDriver.mobile.DoLogin(...);
//or
mobile.DoLogin();
答案 3 :(得分:0)
为什么不使用接口?
使用DoLogin方法创建一个通用接口,并在Desktop和Mobile类中实现该接口。
常用界面:
public interface ICommon
{
void Login<T>(T model);
}
在您的桌面和移动类中实现此界面。