0

如果,假设我有一个带有 ListView 和 Update() 函数的 FormA。然后我也有一个带有函数 A() 的数学类,它有一些魔力......可以使用委托从 A() 调用 Update() 吗?或者,还有更好的方法?我已经意识到从另一个班级更新 gui 表单是有风险的......提前致谢!

4

1 回答 1

2

是的。只要数学课不知道它的实际调用是什么,它就没有那么危险。您只需通过将其指向表单中所需的功能来给它一个粗略的想法:

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 回答