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