我需要在 PropertyChanged 事件处理程序中捕获旧值、新值和属性名称。INotifyPropertyChanged 的默认实现仅提供属性的名称。因此,在互联网上搜索后,我在这里发现了类似的问题,属性的扩展实现已更改。
以下是该 Q 和接口声明的链接:
NotifyPropertyChanged 事件,其中事件参数包含旧值
public interface INotifyPropertyChangedExtended<T>
{
event PropertyChangedExtendedEventHandler<T> PropertyChanged;
}
Run Code Online (Sandbox Code Playgroud)
公共委托 void PropertyChangedExtendedEventHandler(对象发送者, PropertyChangedExtendedEventArgs e);
上面的接口将解决我的问题,但是我不明白如何在我的实体类上实现通用接口,因为 T 将根据属性的数据类型而改变。
谁能帮助我理解,是否可以用 T 参数实现这个接口。这个示例的实现将会非常有帮助。
预先感谢您的帮助。
乌梅什
编辑 #1:根据 Peter 的回复,发布更新的代码,这对于想要在 PropertyChanged 事件中捕获旧值和新值的人可能有用。
public class PropertyChangedExtendedEventArgs : PropertyChangedEventArgs
{
public string OldValue { get; set; }
public string NewValue { get; set; }
public PropertyChangedExtendedEventArgs(string propertyName, string oldValue, string newValue) : base(propertyName)
{
OldValue = oldValue;
NewValue = newValue;
}
}
//
// Summary:
// Notifies clients …Run Code Online (Sandbox Code Playgroud) c# ×1