Как получить доступ к родительскому объекту в c#

У меня есть класс "метра". Одно свойство "метра" является другим классом, названным "производством". Я должен получить доступ к свойству класса метра (номинальная мощность) от производственного класса ссылкой. Номинальная мощность не известна при инстанцировании Метра.

Как я могу сделать это?

Заранее спасибо

public class Meter
{
   private int _powerRating = 0; 
   private Production _production;

   public Meter()
   {
      _production = new Production();
   }
}
30
задан edosoft 21 December 2009 в 13:44
поделиться

5 ответов

Сохраните ссылку на экземпляр счетчика как член в Production:

public class Production {
  //The other members, properties etc...
  private Meter m;

  Production(Meter m) {
    this.m = m;
  }
}

А затем в классе Meter:

public class Meter
{
   private int _powerRating = 0; 
   private Production _production;

   public Meter()
   {
      _production = new Production(this);
   }
}

Также обратите внимание, что вам необходимо реализовать метод / свойство средства доступа, чтобы что класс Production может действительно получить доступ к члену powerRating класса Meter.

43
ответ дан 27 November 2019 в 23:15
поделиться

Вам нужно будет добавить свойство в свой производственный класс и настроить его так, чтобы оно указывало на его родителя, по умолчанию этого не существует.

9
ответ дан 27 November 2019 в 23:15
поделиться

Почему бы не изменить конструктор на Production , чтобы вы могли передавать ссылку во время строительства :

public class Meter
{
   private int _powerRating = 0; 
   private Production _production;

   public Meter()
   {
      _production = new Production(this);
   }
}

В конструкторе Production вы можете назначить это частному полю или свойству. Тогда Производство всегда будет иметь доступ к родительскому объекту.

3
ответ дан 27 November 2019 в 23:15
поделиться

Возможно, вы могли бы добавить метод к своему производственному объекту с именем 'SetPowerRating (int)', который устанавливает свойство в производственной среде, и вызвать его в своем объекте измерителя перед использованием свойства в производственном объекте?

0
ответ дан 27 November 2019 в 23:15
поделиться

что-то вроде этого:

  public int PowerRating
    {
       get { return base.PowerRating; } // if power inherits from meter...
    }
-3
ответ дан 27 November 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: