Оптимизация словаря с классами в качестве ключа C#

Есть класс GeometryExtensions для методов расширения класса Segment. Он хранит в себе словарь, в котором по экземпляру Segment в роли ключа можно обратиться к цвету определенного сегмента. Но проблема в том, что когда программа перестает использовать сегменты, ссылка на них остается в ключе словаря. А так как существует хоть одна действительная ссылка на объект, сборщик мусора не удаляет его. Мне нужно реализовать автоматическое удаление сегментов из словаря, при этом имея доступ только к коду класса GeometryExtensions. Возможно, существуют альтернативные структуры данных, но я не смог найти такую, которая автоматически удаляет объекты с единственной ссылкой.

public static class GeometryExtensions
{
    private static Dictionary<Segment, Color> segmentColors = new Dictionary<Segment, Color>();

    public static void SetColor(this Segment segment, Color color)
    {
        segmentColors[segment] = color;
    }

    public static Color GetColor(this Segment segment)
    {
        if (segmentColors.ContainsKey(segment))
            return segmentColors[segment];
        return Color.Black;
    }
}

Ответы (0 шт):