4

次の問題があります: ウィザード アプリケーションの UserControls のリストがあり、子メソッドを呼び出す必要があります。

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) に配置し、4 つのコントロールすべてがそこから継承されるようにする必要があります。

List<StepControl>その後、 aを作成して関数を直接呼び出すことができます。

于 2013-07-23T19:35:02.540 に答える
4

さて、あなたはすでにそれをしました:

steps[0].StopTimeOut();

すべての Step クラスStopTimeOutメソッドの基本クラスで、protectedまたはとして宣言するだけです。public

例:

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 に答える