sfreaky
@sfreaky
Начинающий веб и софт разработчик

Как создать общее свойство для двух классов?

Суть:
Есть комната. У комнаты есть окна, двери, вырезы в стене и т.д (назовем их элементами).
Созданы два класса соответственно:
class Room{}
class Element{}

У комнаты и у элемента есть стандартные параметры: Длина, Ширина, Высота.
Соответственно у объекта комнаты и у объекта элемента должны быть свойства с параметрами, допустим Dictionary:
class Room { public  Dictionary<string,double> Params {get;set;} }
class Element { public  Dictionary<string,double> Params {get;set;} }
Room room = new Room();
Element element = new Element();
room.Params["Width"]; 
element.Params["Width"];

Комната содержит в себе много элементов, допустим свойство List<>
public List<Element> Elements {get;set;};
Как создать общее свойство стандартных Параметров(Params) для этих двух классов? Если применить наследование, то и у объекта класса Element будет список элементов Elements:
element.Elements[0]["Width"] ,
что будет неправильным.
  • Вопрос задан
  • 753 просмотра
Решения вопроса 1
profesor08
@profesor08
Создать класс:
class Entity {
   public double X = 0;
   public double Y = 0;
   public double Z = 0;
}

class Element : Entity {
  public string color = "red";
}

class Room : Entity {
  public List<Element> objects;
  public void Add(Element obj) {
    objects.Add(obj);
  }
}

class Door : Element{
  public string style = "modern";
}

class Window : Element{
  public string material = "wood";
}

Room room = new Room();

room.Add(new Door());
room.Add(new Window());
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@RidgeA
Если я правильно понял, то можно сделать класс Element, который будет содержать свойства width, height, lengthy.
От этого класса отнаследовать класс Room и добавить List Elements
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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