INotifyPropertyChanged に似たものをわずかな違いで実装できます。INotifyPropertyChanged のほとんどを抽出し、それをジェネリックに変更して、新しい値と古い値を格納しました。次に、これをリッスンできるある種の管理クラスを作成し、onSaving と onDeleting で変更を処理できます。
public interface INotifyProperyChanged<T>
{
event PropertyChangedEventHandler<T> PropertyChanged;
}
public delegate void PropertyChangedEventHandler<T>(object sender,
PropertyChangedEventArgs<T> e);
public class PropertyChangedEventArgs<T> : EventArgs
{
private readonly string propertyName;
public PropertyChangedEventArgs(string propertyName)
{
this.propertyName = propertyName
}
public virtual string PropertyName { get { return propertyName; } }
public T OldValue { get; set; }
public T NewValue { get; set; }
}