C# 如何授予内部类访问外部类属性的权限

C# 如何授予内部类访问外部类属性的权限,c#,inheritance,nested-class,C#,Inheritance,Nested Class,所以,这可能是一个什么应该是什么的孩子的问题,但我很难想出最好的方法来执行以下操作 假设我有一个厨房,我想发出一个命令来打开我的烤面包机,所以我会在一个按钮点击事件中调用类似的东西: private void buttonToaster_On_Click(object sender, EventArgs e) { myKitchen.Toaster.Activate(); } 我设想做下面描述的事情。然而,在C#中,它说我必须将中继板“myStuff”设置为静态。如果出于某种原因,我想用

所以,这可能是一个什么应该是什么的孩子的问题,但我很难想出最好的方法来执行以下操作

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

private void buttonToaster_On_Click(object sender, EventArgs e)
{
   myKitchen.Toaster.Activate();
}
我设想做下面描述的事情。然而,在C#中,它说我必须将中继板“myStuff”设置为静态。如果出于某种原因,我想用它来控制多个厨房,我不想让它成为静态的,但是我该怎么做才能实例化一个厨房,让一个中继板与其中的所有东西通信,并在厨房下面创建设备,访问中继板“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);
     }
  }

}

只需将引用传递给厨房对象:

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);
  }
}

我认为这是一种可能性,但我担心它会实例化多个厨房(每个设备一个)。另外,在嵌套类中创建外部类的实例的想法看起来就像是试图用自己来吸吸尘器。这只会引用主厨房,还是会在每个设备内复制多个厨房?@xantam:不要创建外部类的新实例。只需传入外部类的引用。烤面包机=新设备(本);可能重复的