我的基类中有一个名为IsUpdated的布尔属性,当我的对象中的任何属性在客户端中被更改时,我想将其设置为TRUE。
我的基类是这样的:
[DataContract]
public abstract class EntityBase : INotifyPropertyChanged, IAuditable
{
#region Data Members
[DataMember]
public int Key
{
get;
set;
}
[DataMember]
public bool IsUpdated
{
get;
set;
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
protected bool SetField<T>(ref T field, T value, string propertyName)
{
if (EqualityComparer<T>.Default.Equals(field, value)) return false;
field = value;
IsUpdated = true;
OnPropertyChanged(propertyName);
return true;
}
}
我的所有课程都来自这门课程。如果这不是WCF服务,那就没关系了。但当然,在我向WCF服务添加服务引用之后,我的PropertyChanged事件处理程序和SetField方法不会被复制到客户端。
Visual Studio会自动为我的WCF服务DataContracts实现INotifyPropertyChanged,但是如果派生类中的属性被修改,我该怎么办才能将IsUpdated设置为TRUE?