我正在为我的模型层使用实体框架,并且我想要根据属性的OldValue和NewValue连接一个更改另一个属性的PropertyChanged
事件。有没有我可以为此加入的内置方法?
我在PropertyChanged
事件中想要的基本逻辑是
if (oldValue.DefaultPropertyA == this.PropertyA)
this.PropertyA = newValue.DefaultPropertyA;
答案 0 :(得分:2)
您有OnPropertyChanging部分方法。在那里,您可以访问新值。
旧值,是该时刻属性的值,因此您可以通过常规属性访问它。
代码生成文件中的结构如下:
public global::System.String Property
{
get
{
return _Property;
}
set
{
OnPropertyChanging(value);
ReportPropertyChanging("Property");
_Property = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("Property");
OnPropertyChanged();
}
}
private global::System.String _Property;
partial void OnPropertyChanging(global::System.String value);
partial void OnPropertyChanged();
如您所见,您可以使用OnPropertyChanging和OnPropertyChanged部分方法来通知属性更改。
如果要更改正在设置的属性的值,则无法在部分方法中执行此操作。如果你真的想要这个,你应该更改你的T4模板,在你的财产中注入这个代码或使用Code First,这样你就可以直接访问