У меня есть класс "метра". Одно свойство "метра" является другим классом, названным "производством". Я должен получить доступ к свойству класса метра (номинальная мощность) от производственного класса ссылкой. Номинальная мощность не известна при инстанцировании Метра.
Как я могу сделать это?
Заранее спасибо
public class Meter
{
private int _powerRating = 0;
private Production _production;
public Meter()
{
_production = new Production();
}
}
Сохраните ссылку на экземпляр счетчика как член в 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.
Вам нужно будет добавить свойство в свой производственный класс и настроить его так, чтобы оно указывало на его родителя, по умолчанию этого не существует.
Почему бы не изменить конструктор на Production
, чтобы вы могли передавать ссылку во время строительства :
public class Meter
{
private int _powerRating = 0;
private Production _production;
public Meter()
{
_production = new Production(this);
}
}
В конструкторе Production
вы можете назначить это частному полю или свойству. Тогда Производство
всегда будет иметь доступ к родительскому объекту.
Возможно, вы могли бы добавить метод к своему производственному объекту с именем 'SetPowerRating (int)', который устанавливает свойство в производственной среде, и вызвать его в своем объекте измерителя перед использованием свойства в производственном объекте?
что-то вроде этого:
public int PowerRating
{
get { return base.PowerRating; } // if power inherits from meter...
}