0

もし、ListViewとUpdate()関数を備えたFormAがあるとしましょう。次に、いくつかの魔法を実行する関数A()を持つ1つの数学クラスもあります...デリゲートを使用してA()からUpdate()を呼び出すことはできますか?またはもっと良い方法はありますか?別のクラスのGUIフォームを更新するのは危険だと気づきました。よろしくお願いします。

4

1 に答える 1

2

はい。Math クラスが実際に何を呼び出しているかを知らない限り、それほど危険ではありません。フォームから目的の関数を指すことで、大まかなアイデアを与えるだけです。

public class MathClass {
    public Action FunctionToCall { get; set; }

    public void DoSomeMathOperation() {
        // do something here.. then call the function:

        FunctionToCall();
    }
}

あなたのフォームでは、これを行います:

// Form.cs
public void Update() {
     // this is your update function
}

public void DoMathStuff() {
    MathClass m = new MathClass() { FunctionToCall = Update };
    m.DoSomeMathOperation(); // MathClass will end up calling the Update method above.
}

MathClass は Update を呼び出しますが、Update を呼び出すように指示したオブジェクトや Update がどこにあるのかを認識していないため、オブジェクトを密結合するよりも安全です。

于 2012-11-06T01:50:18.667 に答える