У меня есть объект (Delegate), который должен оставаться в живых (не собирать мусор), пока жив другой объект (TargetObject). Я хочу, чтобы Delegate собирал мусор, когда TargetObject собирается (или, по крайней мере, доступен для сбора).
Сложность в том, что мне не нужно ссылаться на Delegate из TargetObject, поскольку я хочу, чтобы он работал для существующих объектов, не знающих о Delegate, и я не хочу влиять на время жизни TargetObject. Это вообще возможно?
Спасибо.
Изменить: спасибо за ответы. Попробую уточнить, что я задумал.
Я пытаюсь реализовать слабые события, но я не поклонник WeakEventManager (особенно IWeakEventListener). Я хочу иметь слабую ссылку на обработчик событий делегата (Delegate), который указывает на метод в объекте TargetObject. Должна быть сильная ссылка на Delegate, пока TargetObject жив, чтобы поддерживать Delegate в живых, но если что-то с более длительным временем жизни ссылается на Delegate, он поддерживает TargetObject в живых (устраняя цель слабого события).
Было бы неплохо, если бы объекты, подписывающиеся на слабые события, не нуждались в каких-либо особых деталях реализации, таких как необходимость удерживать коллекцию делегатов.
Изменить Изменить: изменено 'A' на 'Делегат' и 'B' на 'TargetObject'