現在、私のアプリケーションでは、ユーザーが変更した値をログに記録していますが、これは正常に機能します。クラスオブジェクトMyObject
とLogs
オブジェクトがあり、各プロパティで次のようにイベントを発生させています。
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
。他のオプションはありますか?