Есть ли способ связать экземпляр объекта (объект A) со вторым объектом (объект B) обобщенным образом, чтобы, когда B собирали, A становился приемлемым для сбора? То же самое поведение, которое произошло бы, если бы B имел переменную экземпляра, указывающую на A, но без явного изменения определения класса B и возможности делать это динамически?
Такой же эффект может быть реализован с помощью забавного использования события Component.Disposed, но я не хочу делать B одноразовым
EDIT
Я в основном создаю кеш объектов, которые связаны с одним «корневым» объектом, и я не хочу, чтобы кеш был статичным, так как может быть много корневых объектов, использующих разные кеши, поэтому память будет израсходована, когда корневой объект больше не используется, но кэшированные объекты все еще существуют.
Итак, я хочу, чтобы коллекция кэшированных объектов была связана с каждым «корневым» объектом без изменения определения корневого объекта. Тип метаданных дополнительной ссылки на объект, прикрепленной к каждому экземпляру корневого объекта. Таким образом, каждая коллекция будет собираться при получении корневого объекта и не зависать, как если бы использовался статический кеш.