我正在构建一个游戏,其中几种方法相互关联,需要在后台调用。例如,当士兵需要离开城堡时,需要在他离开后立即打开然后关闭门:

public void MoveTheGate(bool openTheGate)
{
    if (openTheGate)
    {
        //  code for: open the gate
    }
    else
    {
        //  code for: close the gate
    }
}

public void GetOutOfTheCastle()
{
    MoveTheGate(true);

    //  code for: get out of the castle

    MoveTheGate(false);
}


当来自另一个王国的信使到达城堡时,也是如此,必须在信使进入城堡的开始和结束时调用MoveTheGate()方法。

有没有更精致的方法来实现这一目标?

最佳答案

你可以做

OpenGate(()=>
  { stuff to do with gate open }
);


OpenGate在哪里

public void OpenGate(Action action)
{
    try
    {
      MoveTheGate(true);
      action();
   }
   finally
   {
    MoveTheGate(false);
   }
}

10-04 10:39