Изменено в метке времени и обновлено при любых изменениях свойства класса - PullRequest
3 голосов
/ 24 января 2011

Я немного не уверен в том, как бы я сформулировал этот вопрос, так что извините, если он повторяется.

В основном я хочу вызывать 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();
   }
}

Ответы [ 2 ]

2 голосов
/ 24 января 2011

То, что вы описываете, звучит довольно близко к уведомлению об изменении свойства, которое обычно делается через интерфейс 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 голос
/ 24 января 2011

Не уверен, что это лучший способ, но один из способов сделать это - вызвать метод UpdateModifiedTimeStamp() в трех параметрах ваших свойств.

например:

public string _firstName;
public string Firstname 
{ 
  get { return this._firstName; }
  set
  {
    this._firstName = value;
    this.UpdateModifiedTimestamp();
  }
}

Аналогичным образом сделайте то же самое для свойств Lastname и Phone.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...