Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从不同的类文件继承方法?_C#_.net_Selenium Webdriver - Fatal编程技术网

C# 如何从不同的类文件继承方法?

C# 如何从不同的类文件继承方法?,c#,.net,selenium-webdriver,C#,.net,Selenium Webdriver,好的,伙计们,首先我很抱歉我对c不太在行。基本上我有两个类文件,让我们调用一个TestBase和另一个TestScripts1。在TestScripts1类中,它继承了初始值设定项TestBase,因此我的所有脚本都可以运行。现在反过来,我想在TestScripts1中使用一个名为DragAssignDeviceAndDriver()的方法,并在TestBase中使用它。有人知道怎么做吗 下面是我在TestBase类中为初始值设定项编写的代码: [TestClass] public cl

好的,伙计们,首先我很抱歉我对c不太在行。基本上我有两个类文件,让我们调用一个TestBase和另一个TestScripts1。在TestScripts1类中,它继承了初始值设定项TestBase,因此我的所有脚本都可以运行。现在反过来,我想在TestScripts1中使用一个名为DragAssignDeviceAndDriver()的方法,并在TestBase中使用它。有人知道怎么做吗

下面是我在TestBase类中为初始值设定项编写的代码:

[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   

    }
}