Я знаю, что многие люди задавали вопрос «как мне отказаться от подписки»
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);
Что, если есть шанс, что я уже установил этот обработчик для некоторых / всех объектов в этом цикле? Есть ли способ отписаться от них?
Я уверен, что могу использовать отражение и полностью очистить обработчик, но есть ли более чистый способ?