C# 使用受保护的构造函数扩展非静态类

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不包含文本的定义”的权利。扩展方法处理类型的实例。所以你可

我正在尝试按类扩展Selenium

但是当我做上述操作时,我在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");