0

したがって、これは何の子であるべきかという問題かもしれませんが、次のことを実行するための最良の方法を見つけるのに苦労しています。

キッチンがあり、トースターをオンにするコマンドを発行したいので、ボタン クリック イベントで次のように呼び出します。

private void buttonToaster_On_Click(object sender, EventArgs e)
{
   myKitchen.Toaster.Activate();
}

私は以下に描かれていることをすることを想像しました。ただし、C# では、RelayBoard "myStuff" を静的にする必要があると書かれています。何らかの理由でこれで複数のキッチンを制御したい場合、これを静的にしたくないのですが、キッチンをインスタンス化し、その中のすべてと通信する1つのリレーボードを持ち、その下にアプライアンスを作成できるようにするにはどうすればよいですか? RelayBoard「myStuff」にアクセスしてコマンドを書き込むキッチン?

class Kitchen
{
  RelayBoard myStuff = new RelayBoard();

  Appliance Toaster = new Appliance();
  Appliance Coffee_Maker = new Appliance();


  class Appliance
  {
     void Activate()
     {
        myStuff.WriteCommand(ApplianceAddress, 1);
     }

     void Deactivate()
     {
        myStuff.WriteCommand(ApplianceAddress, 0);
     }
  }

}
4

1 に答える 1

2

キッチンオブジェクトへの参照を渡すだけです。

class Appliance
{
  private Kitchen _parent;
  public Appliance(Kitchen parent) { _parent = parent; }
  void Activate()
  {
    _parent.myStuff.WriteCommand(ApplianceAddress, 1);
  }

  void Deactivate()
  {
    _parent.myStuff.WriteCommand(ApplianceAddress, 0);
  }
}
于 2012-10-30T23:45:57.240 に答える