如何为外部类属性提供内部类访问

时间:2012-10-30 23:42:53

标签: c# inheritance nested-class

所以,这可能是什么应该是孩子的问题,但我很难找出执行以下操作的最佳方法。

假设我有一个厨房,我想发出一个打开烤面包机的命令,所以我会在按钮点击事件中调用类似的东西:

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

我设想做下面描述的内容。但是,在C#中它表示我必须使RelayBoard“myStuff”成为静态。如果由于某种原因我想用这个来控制多个厨房,我宁愿不要让它变得静止,但是我怎么能做到这一点所以我可以实例化一个厨房,有一个与其中的所有内容对话的中继板,并在那下创建设备访问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);
     }
  }

}

1 个答案:

答案 0 :(得分: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);
  }
}