Как создать общее свойство для двух классов? Суть:
Есть комната. У комнаты есть окна, двери, вырезы в стене и т.д (назовем их элементами).
Созданы два класса соответственно:class Room{}
class Element{}
У комнаты и у элемента есть стандартные параметры: Длина, Ширина, Высота.
Соответственно у объекта комнаты и у объекта элемента должны быть свойства с параметрами, допустим Dictionary:class Room { public Dictionary Params {get;set;} }
class Element { public Dictionary Params {get;set;} }
Room room = new Room();
Element element = new Element();
room.Params["Width"];
element.Params["Width"];
Комната содержит в себе много элементов, допустим свойство List<>public List Elements {get;set;};
Как создать общее свойство стандартных Параметров(Params) для этих двух классов? Если применить наследование, то и у объекта класса Element будет список элементов Elements:element.Elements[0]["Width"] ,
что будет неправильным.

21 Авг 2019 в 06:29
146 +1
0
Ответы
1

Для создания общего свойства стандартных параметров для двух классов можно создать интерфейс, который будет содержать это свойство. Элементы и комната будут реализовывать данный интерфейс.

Пример кода:

using System;
using System.Collections.Generic;
interface IParams
{
Dictionary<string, double> Params { get; set; }
}
class Room : IParams
{
public Dictionary<string, double> Params { get; set; }
public List<Element> Elements { get; set; }
}
class Element : IParams
{
public Dictionary<string, double> Params { get; set; }
}
Room room = new Room();
Element element = new Element();
room.Params["Width"] = 10;
element.Params["Width"] = 5;
Console.WriteLine(room.Params["Width"]);
Console.WriteLine(element.Params["Width"]);

В данном примере, интерфейс IParams содержит свойство Params типа Dictionary<string, double>. Классы Room и Element реализуют этот интерфейс и имеют свойство Params. Теперь у обоих классов есть общее свойство стандартных параметров.

Наследование здесь не подходит, так как вы хотите иметь общий функционал для разных классов, но не хотите, чтобы элементы имели свойства, которые присущи только комнате. Использование интерфейса позволяет достичь этой цели.

20 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 852 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир