我目前正在使用WPF并实现派生INotifyPropertyChanged
的模型相关类。我发现声明一些辅助方法非常有用。所以我想自动添加这些辅助方法:
public static class INotifyPropertyChangedHelper
{
static void notifyPropertyChanged(this INotifyPropertyChanged propertyChanged, string PropertyName = "")
{
// errors here
propertyChanged.PropertyChanged(propertyChanged, new PropertyChangedEventArgs(PropertyName));
}
static bool setField<T>(this INotifyPropertyChanged propertyChanged, ref T field, T value, [CallerMemberName]string propertyName = "")
{
if (EqualityComparer<T>.Default.Equals(field, value)) return false;
field = value;
propertyChanged.notifyPropertyChanged(propertyName);
return true;
}
}
给我一个编译错误
事件'System.ComponentModel.INotifyPropertyChanged.PropertyChanged'只能' 出现在+ =或 - =“的左侧,因为PropertyChanged是一个事件。
有没有一种优雅的方法来解决这个问题?
答案 0 :(得分:0)
这样做没有简单的技巧,扩展方法是编译器识别的静态方法,它们不会成为类本身的一部分。由于+ =和 - = on事件只能通过定义事件的类来访问,因此扩展方法无法帮助您。
我猜你是想破解一个已知的问题: Implementing INotifyPropertyChanged - does a better way exist?