1
當前在我的應用程序中,我正在記錄用戶更改的任何值,這很好。我有一個類的對象MyObject
和Logs
對象和每個屬性我提出一個事件這樣:Property Change Logging
private string _occupation;
[FieldAlias("_occupation")]
public string Occupation
{
get { return _occupation; }
set
{
if (this.Occupation != value)
{
string oldValue = Occupation;
_occupation = value;
NotifyPropertyChanged("Occupation", oldValue, value);
}
}
}
的MyObject
類也實現INotifyPropertyChanged
和我有以下事件:
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged<T>(string propertyName, T oldValue, T newValue)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new Helper.PropertyChangedExtendedEventArgs<T>(propertyName, oldValue, newValue));
}
this.Logs.Add(new Logs
{
CreatedDate = DateTime.Now,
CreatedBy = this.ModifiedBy,
PropertyName = propertyName,
NewValue = (newValue != null) ? newValue.ToString() : "",
OldValue = (oldValue != null) ? oldValue.ToString() : ""
});
}
一切正常除了他上面的CreatedBy
字段。由於它來自MyObject's
ModifiedBy
屬性,更新不會立即發生,因爲當時該字段將包含以前的用戶名(希望它有意義)。
我該如何反映所發生的變化,我無法在ModifiedBy
屬性上提升事件,因爲它將在Logs
表中創建一個新行,那麼還有其他選項嗎?
也許您可以在實際更改修改者的步驟中添加日誌記錄。這是鏈接對列表的所有更改,並記錄所有更改,當修改發生改變時。無論是或者你將不得不首先更改ModifiedBy屬性 – TYY
在哪裏設置了ModifiedBy? – JosephHirn
@Ginosaji它在MyObject中作爲屬性設置。 – Zaki