c#从父列表中调用子方法

时间:2013-07-23 19:31:41

标签: c# parent-child

我有以下问题: 我有一个向导应用程序的UserControl列表,需要调用子方法

List<UserControl> steps = new List<UserControl>();
steps.Add(new Step1());
steps.Add(new Step2());
steps.Add(new Step3());
steps.Add(new Step4());

所有都有StopTimeOut()方法。我该如何致电:steps[0].StopTimeOut();

谢谢。

2 个答案:

答案 0 :(得分:6)

您应该将该方法放在一个公共基类(例如StepControl)中,并使所有四个控件继承它。

然后你可以制作一个List<StepControl>并直接调用该函数。

答案 1 :(得分:4)

嗯,你已经做到了:

steps[0].StopTimeOut();

在基类中声明所有步骤类StopTimeOut方法为protectedpublic

示例:

public Step : UserControl {
    ....
    public virtual void StopTimeOut() {
         //BASE IMPLEMENTATION
    }
}

public Step1 : Step {
    public override void StopTimeOut() {
         //CHILD IMPLEMENTATION
    }
}

public Step2 : Step {
    public override void StopTimeOut() {
         //CHILD IMPLEMENTATION
    }
}
..

并在代码中:

List<Step> steps = new List<Step>();
steps.Add(new Step1());
steps.Add(new Step2());
..