Кажется, вы пытаетесь добавить произвольные данные (экземпляр Sector
) к объектам вашего потребителя, к которым они (ваши потребители) не должны иметь доступ или изменить их.
Существует способ сделать это чисто (фактически двумя способами), не подвергая себя опасности, даже не заставляя потребителей внедрять ваш интерфейс.
Первый способ - сохранить Dictionary<object, Sector>
, который будет содержать Sector
для объекта каждого потребителя. Но этот способ бесполезен, поскольку вы не знаете, когда удалять объект из словаря, поскольку вы не управляете временем жизни объекта потребителя. Это также предотвратит сбор мусора на объектах потребителей.
Второй (правильный) способ - использовать ConditionalWeakTable<object, Sector>
, который был создан именно для этой цели - прикрепление произвольных данных к объектам, не влияя на их статус с корнем GC. Пока объект потребителя «жив» (не собранный мусор), вы всегда можете прочитать его сектор, и запись удаляется, когда объект собирается мусором.