Ada*_*kis 5 c# lambda closures
我知道很多人都问过"如何取消订阅以下内容"的问题
myButton.Click += (s, e) => MessageBox.Show("Hello World!");
Run Code Online (Sandbox Code Playgroud)
有了明显的答案
EventHandler HelloWorld = delegate { MessageBox.Show("Hello World!"); };
myButton.Click -= HelloWorld;
myButton.Click += HelloWorld;
Run Code Online (Sandbox Code Playgroud)
但我正在使用lambda创建一个闭包?如果我的对象有一个叫做AssessmentRationChanged类型的事件Action,我就这样接线:
foreach (MassFMVUpdateDTO dto in CurrentProperties)
dto.AssessmentRationChanged += () => setCellColorBasedOnAssessmentRatioValue(dto);
Run Code Online (Sandbox Code Playgroud)
如果有可能我已经为此循环中的部分/全部对象设置了此处理程序,该怎么办?有没有办法取消订阅?
我确信我可以使用反射并彻底清除处理程序,但是有更清洁的方法吗?