我对如何说出这个问题有些不确定,所以请原谅我这是否重复。
基本上我想在每次更改属性时调用UpdateModifiedTimestamp。这只是我写得很快的一个示例课程,但应该解释我想要实现的目标。
每次更改名字,姓氏或电话时,都应更新ModifiedOn属性。
public class Student {
public DateTime ModifiedOn { get; private set; }
public readonly DateTime CreatedOn;
public string Firstname { set; get; }
public string Lastname { set; get; }
public string Phone { set; get; }
public Student() {
this.CreatedOn = DateTime.Now();
}
private void UpdateModifiedTimestamp() {
this.ModifiedOn = DateTime.Now();
}
}
答案 0 :(得分:2)
您所描述的内容听起来非常接近通常通过INotifyPropertyChanged
界面完成的属性更改通知。实现此接口可以为您的问题提供更通用的解决方案:
public class Student :INotifyPropertyChanged
{
public string Firstname { set; get; }
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
UpdateModifiedTimestamp(); // update the timestamp
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
string _firstname;
public string Firstname //same for other properties
{
get
{
return _firstname;
}
set
{
if (value != _firstname)
{
_firstname = value;
NotifyPropertyChanged("Firstname");
}
}
}
}
这种方法也会让您的班级消费者可以获得更改通知,如果这是您正在拍摄的内容,则可能更喜欢不同的解决方案。
答案 1 :(得分:1)
不确定这是否是最好的方法,但您可以这样做的一种方法是,在属性的三个setter中调用UpdateModifiedTimeStamp()
方法。
例如:
public string _firstName;
public string Firstname
{
get { return this._firstName; }
set
{
this._firstName = value;
this.UpdateModifiedTimestamp();
}
}
同样,对Lastname
和Phone
属性执行相同的操作。