Я знаю, что многие люди задавали вопрос "как мне отписаться от следующего"
myButton.Click += (s, e) => MessageBox.Show("Hello World!");
С очевидным ответом
EventHandler HelloWorld = delegate { MessageBox.Show("Hello World!"); };
myButton.Click -= HelloWorld;
myButton.Click += HelloWorld;
Но что яиспользуя лямбду, чтобы создать замыкание?Что, если у моего объекта есть событие с именем AssessmentRationChanged
, которое имеет тип Action
, и я подключаю его таким образом:
foreach (MassFMVUpdateDTO dto in CurrentProperties)
dto.AssessmentRationChanged += () => setCellColorBasedOnAssessmentRatioValue(dto);
Что если есть вероятность, что я уже установил этот обработчик для некоторых/ все объекты в этом цикле?Есть ли способ отменить их подписку?
Я уверен, что мог бы использовать отражение и полностью очистить обработчик, но есть ли более чистый способ?