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.