I often run into a situation where I want to subscribe to an event, but I want to use a lambda to do so:
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");
The problem I run into is that I don't know how to unhook the event. Since the lambda creates an anonymous delegate under the hood, I have nothing to call -=
on.
Now, I could just create a method:
private void SomethingHappened(object sender, EventArgs args)
{
Console.WriteLine("Something Happened");
}
And then I can hook/unhook all I want:
observable.SomethingHappened += SomethingHappened;
observable.SomethingHappened -= SomethingHappened;
But I'd really, really, really like to use my lambda instead. In a more complicated example, lambdas come in really handy here.
I am pretty sure that I am out of luck... but I was wondering if anyone out there has figured out a way to do this?