Рид верно. Однако я вижу, что вы пытаетесь сделать (сделать ваш код многоразовым - хорошо для вас ); и я просто укажу, что это часто легко исправить, приняв сам PropertyChangedEventHandler
делегат и передав его изнутри реализации INotifyPropertyChanged
:
public static void Raise(this PropertyChangedEventHandler handler, object sender, string propertyName)
{
if (handler != null)
{
handler(sender, new PropertyChangedEventArgs(propertyName));
}
}
Затем из вашего класса, который реализует INotifyPropertyChanged
, вы можете вызвать этот метод расширения следующим образом:
PropertyChanged.Raise(this, "MyProperty");
Это работает, потому что, как сказал Марк , внутри класса, объявляющего событие, вы можете обращаться к нему как к полю (что означает, что вы можете передать его как аргумент делегата методу включая методы расширения).