Я часто сталкиваюсь с ситуацией, когда хочу подписаться на событие, но я хочу использовать лямбда для этого:
public class Observable
{
public event EventHandler SomethingHappened;
public void DoSomething()
{
// Do Something...
OnSomethingHappened();
}
}
// Somewhere else, I hook the event
observable.SomethingHappened += (sender, args) => Console.WriteLine("Something Happened");
Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как отменить событие. Поскольку лямбда создает анонимный делегат под капотом, мне нечего называть -=
on.
Теперь я мог бы просто создать метод:
private void SomethingHappened(object sender, EventArgs args)
{
Console.WriteLine("Something Happened");
}
И тогда я могу зацепить/отцепить все, что хочу:
observable.SomethingHappened += SomethingHappened;
observable.SomethingHappened -= SomethingHappened;
Но я действительно очень люблю использовать свою лямбду вместо этого. В более сложном примере lambdas очень полезны здесь.
Я уверен, что мне не повезло... но мне было интересно, если кто-нибудь там выяснит способ сделать это?