Обращение к подклассам фигур через класс фигуры C#
Есть абстрактный класс Figure, который содержит абстрактный метод getName(). Существует множество подклассов фигур, которые наследуют Figure, в каждом из которых определен метод getName() под каждую фигуру.
Каждой фигуре присвоен уникальный ID (int). Требуется функция, которая по ID обратится к методу getName() нужной фигуры в зависимости от ID.
Подскажите способы или альтернативу функционала.
Ответы (1 шт):
Автор решения: Yury Bakharev
→ Ссылка
Можно попробовать так, если конструктора фигур лёгкие
public abstract class Figure
{
public abstract int Id { get; set; }
public abstract string GetName();
}
public class FigureA : Figure
{
public override int Id { get; set; }
public FigureA()
{
Id = Environment.TickCount;
}
public override string GetName()
{
throw new NotImplementedException();
}
}
public class FigureB : Figure
{
public override int Id { get; set; }
public FigureB()
{
Id = Environment.TickCount;
}
public override string GetName()
{
throw new NotImplementedException();
}
}
public class FabricFigure
{
public List<Figure> Figures { get; set; }
public string GetNameById(int Id)
{
Figures.Add(new FigureA());
Figures.Add(new FigureB());
foreach(var figure in Figures)
{
if (figure.Id == Id)
return figure.GetName();
}
return string.Empty;
}
}