I'm not sure exactly what you are trying to achieve or why you do not want to use anonymous methods, but you could do something more general:
private PropertyChangedEventHandler GetHandler (Func<PropertyChangedEventArgs, bool> test, Action toInvoke) { return new PropertyChangedEventHandler( (o, e) => { if (test(e)) toInvoke(); }); }
Then you can use it like this:
source.PropertyChanged += GetHandler ( p => p.PropertyName == propertyName, MyMagicMethod );
Thus, your test and group of target methods can be easily replaced. Your event handler is also strongly typed, not anonymous.
source share