Я учусь NHibernate и MVVM и наткнулся на следующую проблему:IDataErrorInfo и INotifyPropertyChanged
После того, как модель классов по NHibernate должны быть POCO объекты, есть еще один способ реализации IDataErrorInfo и INotifyPropertyChanged на модели классов?
Например:
public class Person
{
public virtual int ID { get; set; }
public virtual string firstName { get; set; }
public virtual string lastName { get; set; }
public virtual string phoneNumber{ get; set; }
//...
//implementation of equals and hash
//...
}
INotifyPropertyChanged реализация
public class Person : INotifyPropertyChanged
{
public virtual int ID { get; set; }
public virtual string firstName { get; set; }
public virtual string lastName { get; set; }
public virtual string phoneNumber{ get; set; }
public virtual string FirstName
{
get { return firstName; }
set
{
firstName = value;
RaisePropertyChanged("FirstName");
}
}
public virtual string LastName
{
get{ return lastName; }
set
{
lastName = value;
RaisePropertyChanged("LastName");
}
}
public virtual string PhoneNumber
{
get { return phoneNumber;}
set
{
phone = value;
RaisePropertyChanged("Phone");
}
}
}
#region INofityPropertyChanged members
public virtual event PropertyChangedEventHandler PropertyChanged;
public virtual void RaisePropertyChanged(string PropertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));
}
#endregion
Обратите внимание, что INotifyPropertyChanged (или другой интерфейс, как IDataErrorInfo) код не относится к домену.
Вопрос в том, что с точки зрения хорошего моделирования это приемлемо? Должен ли я реализовывать эти интерфейсы на моем ViewModel?
Ваш вопрос сбивает с толку. Как вы думаете, что означает POCO? Как это мешает вам реализовать эти интерфейсы? Вероятно, вам следует расширить свой вопрос, чтобы описать конкретную проблему - в настоящее время она слишком широка. –
Не являются ли POCO классом, который содержит только поля в отношении домена? При реализации этих интерфейсов на модели я нарушаю это правило? –