Обращение к подклассам фигур через класс фигуры 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;
    }
}
→ Ссылка