Обработчик лямбда-событий отмены подписки ** с закрытием **

Я знаю, что многие люди задавали вопрос «как мне отказаться от подписки»

myButton.Click += (s, e) => MessageBox.Show("Hello World!");

С очевидным ответом

EventHandler HelloWorld = delegate { MessageBox.Show("Hello World!"); };
myButton.Click -= HelloWorld;
myButton.Click += HelloWorld;

Но что я? m с помощью лямбды для создания замыкания? Что, если у моего объекта есть событие под названием AssessmentRationChanged , которое имеет тип Action , и я связываю его следующим образом:

foreach (MassFMVUpdateDTO dto in CurrentProperties)
   dto.AssessmentRationChanged += () => setCellColorBasedOnAssessmentRatioValue(dto);

Что, если есть шанс, что я уже установил этот обработчик для некоторых / всех объектов в этом цикле? Есть ли способ отписаться от них?

Я уверен, что могу использовать отражение и полностью очистить обработчик, но есть ли более чистый способ?

5
задан Adam Rackis 11 March 2011 в 15:39
поделиться