在派生嵌套类中调用父函数

如何在类中调用类Run()中的函数?ControllerI2C


class Program

{

    public class Controller

    {

        public void Run()

        {

        }

    }


    public class ChildController : Controller

    {

    }


    public class LowLevelController : ChildController

    {

        private class I2C

        {

            public I2C()

            {

            }


            // Want to call Controller.Run() from this level

        }


        public void Computate()

        {

            base.Run();

        }

    }

}


阿晨1998
浏览 116回答 2
2回答

呼如林

选项1实现此目的的一种方法是在 I2C 中公开接受操作的方法。这将允许 I2C 实例(它是LowLevelController 中定义的私有类)调用 Controller.Run。例如, private class I2C {     public I2C()     {     }     public void RunBase(Action execute)     {        execute.Invoke();     } }现在您可以将 RunBase 执行为 public void Computate() {    var i2c = new I2C();    i2c.RunBase(()=>base.Run()); }选项2另一种选择是将 LowLevelController 的实例传递给 I2C 并调用 Controller.Run 方法例子,public class LowLevelController : ChildController{    private class I2C    {       private LowLevelController _parent;       public I2C(LowLevelController parent)       {          _parent = parent;       }       public void RunBase()       {          _parent.Run();       }    }     public void Computate()     {         var i2c = new I2C(this);         i2c.RunBase();     }}

HUWWW

我想你想要的很简单:public class LowLevelController : ChildController {    private class I2C {        public I2C(LowLevelController outerInstance) {            OuterInstance = outerInstance;        }        private LowLevelController OuterInstance { get; }        private void DoSomething() {            OuterInstance.Run();        }    }}
打开App,查看更多内容
随时随地看视频慕课网APP