4

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

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();

谢谢你。

4

2 回答 2

6

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

然后,您可以List<StepControl>直接创建并调用该函数。

于 2013-07-23T19:35:02.540 回答
4

好吧,你已经做到了:

steps[0].StopTimeOut();

只需在所有 Step 类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());
..
于 2013-07-23T19:35:03.320 回答