I am currently implementing an Extension for the INotifiyPropertyChanged interface, you can read this:
INotifyPropertyChanged - Event stays null
for furhter info
Simply, it isn't possible. You need 3 pieces of information:
this.PropertyChanged
, on the left)propertyName
, supplied by the compiler)sender
)sender
cannot be inferred from any of the other information, and there is no compiler option to provide it. However, frankly, I would simply use an instance method instead:
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if(handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
Then the caller simply issues:
OnPropertyChanged(); // job done
You could of course have OnPropertyChanged
call your static method, but that seems unnecessary.
In some ways it feels like we should be able to just pass in the INotifyPropertyChanged
instance to use for both sender
and to access the PropertyChanged
, but of course we can't get the actual delegate from an event
declaration.