C# 如何从不同的类文件继承方法?
好的,伙计们,首先我很抱歉我对c不太在行。基本上我有两个类文件,让我们调用一个TestBase和另一个TestScripts1。在TestScripts1类中,它继承了初始值设定项TestBase,因此我的所有脚本都可以运行。现在反过来,我想在TestScripts1中使用一个名为DragAssignDeviceAndDriver()的方法,并在TestBase中使用它。有人知道怎么做吗 下面是我在TestBase类中为初始值设定项编写的代码:C# 如何从不同的类文件继承方法?,c#,.net,selenium-webdriver,C#,.net,Selenium Webdriver,好的,伙计们,首先我很抱歉我对c不太在行。基本上我有两个类文件,让我们调用一个TestBase和另一个TestScripts1。在TestScripts1类中,它继承了初始值设定项TestBase,因此我的所有脚本都可以运行。现在反过来,我想在TestScripts1中使用一个名为DragAssignDeviceAndDriver()的方法,并在TestBase中使用它。有人知道怎么做吗 下面是我在TestBase类中为初始值设定项编写的代码: [TestClass] public cl
[TestClass]
public class TestBase
{
[TestInitialize]
public void BaseTestInit()
{
// create chrome driver
//driver = new ChromeDriver();
ChromeOptions opt = new ChromeOptions();
opt.AddArgument("disable-infobars");
opt.AddArguments("--start-maximized");
opt.AddArguments("--disable-extensions");
driver = new ChromeDriver(opt);
LoginAndSelectAutomationFleet(driver);
//GenerationTestData();
}
}
public void LoginAndGenerateTestData(IWebDriver driver)
{
DragAssignDeviceAndDriver();
}
上面我如何继承方法DragAssignDeviceAndDriver()
这是我的代码类TestScripts1—正如您所看到的,TestScripts1已经继承了TestBase:
[TestClass]
public class TestScripts1: TestBase
{
[TestInitialize]
public void Setup()
{
(_regRep.organizationOption, "Amazing Power", driver);
}
[TestMethod]
[TestCategory("Cat1")]
public void DragAssignDeviceAndDriver()
{
//Do stuff
}
您“不能”从基类调用在派生类中定义的方法。基类需要知道如何调用它。它应该在基类中声明,并在派生类中重写
在这种情况下,当基类没有任何默认实现时,可以将其声明为抽象。(因为它是基类,所以不会直接构造)
这样基类就可以调用重写的方法
例如:
[TestClass]
public abstract class TestBase
{
protected abstract void DragAssignDeviceAndDriver();
[TestInitialize]
public void BaseTestInit()
{
// create chrome driver
//driver = new ChromeDriver();
ChromeOptions opt = new ChromeOptions();
opt.AddArgument("disable-infobars");
opt.AddArguments("--start-maximized");
opt.AddArguments("--disable-extensions");
driver = new ChromeDriver(opt);
LoginAndSelectAutomationFleet(driver);
//GenerationTestData();
}
public void LoginAndGenerateTestData(IWebDriver driver)
{
DragAssignDeviceAndDriver();
}
}
[TestClass]
公共类TestScripts1:TestBase
{
[测试初始化]
公共作废设置()
{
(_regRep.organizationOption,“惊人的力量”,驱动程序);//您似乎不正确地使用了继承…继承的工作方式正好相反。如果TestScripts1从TestBase继承,那么TestScript1可以从TestBase调用方法,但不能从TestBase调用方法。@gsharp那么您所说的是我唯一能做到这一点的方法,就是复制我的方法并将其放在我的TestBase中?不,我不是这么说的。为什么不呢你不能把代码放在一个助手类中,然后从DragassignDevice和Driver以及LoginAndGenerateTestData调用它吗?或者在TestBase中实现它并在TestScript1中使用它。我认为你需要澄清这个问题。你能画一个图表或者用简单的英语解释要求是什么吗?我得到一个错误,无法更改access modif重写“受保护”继承成员TestBase.DragAssignDeviceAndDriver()时的iers@Butler承认,我已经更改了它…它应该是protectedoverride void…
严重性代码描述项目文件行抑制状态错误CS0534'GenerateTestData'未实现继承的抽象成员'TestBase.DragAssignDeviceAndDriver()“UnitTestProj C:\Users\NAME\source\repos\AmazingPower.Hub.AutomationTests\UnitTestProj\GenerateTestData.cs在运行任何子方法时都不起作用
[TestClass]
public class TestScripts1: TestBase
{
[TestInitialize]
public void Setup()
{
(_regRep.organizationOption, "Amazing Power", driver); // <--- ??
}
[TestMethod]
[TestCategory("Cat1")]
protected override void DragAssignDeviceAndDriver()
{
//Do stuff
}
}