C# 使用受保护的构造函数扩展非静态类
我正在尝试按类扩展Selenium 但是当我做上述操作时,我在By类上找不到我的扩展名 您需要在C# 使用受保护的构造函数扩展非静态类,c#,.net,selenium-webdriver,C#,.net,Selenium Webdriver,我正在尝试按类扩展Selenium 但是当我做上述操作时,我在By类上找不到我的扩展名 您需要在By类的实例上调用它,而不是在By类本身上调用它。 例如: By by = ...; by.Text("Sales"); 您是否有一个using语句,其中包含SeleniumExtensions在中定义的名称空间?@canton7我有,yesHow您是否试图调用它?driver.IsVisible(By.Text(“Sales”);给我“By不包含文本的定义”的权利。扩展方法处理类型的实例。所以你可
By
类的实例上调用它,而不是在By
类本身上调用它。
例如:
By by = ...;
by.Text("Sales");
您是否有一个
using
语句,其中包含SeleniumExtensions
在中定义的名称空间?@canton7我有,yesHow您是否试图调用它?driver.IsVisible(By.Text(“Sales”);给我“By不包含文本的定义”的权利。扩展方法处理类型的实例。所以你可以通过=。。。;by.Text(…)。但是您不能通过classI将静态方法添加到,因为构造函数被标记为受保护,所以无法创建实例。所以我猜我想做的是不可能的?难道不是By的子类吗?如果没有,那么,是的,这是不可能的,但我不相信没有。扩展方法将应用于任何子类,就像它们本身一样。@marceli您可以通过调用By.XPath(…)
来创建实例。但这可能不是你想要的
By by = ...;
by.Text("Sales");