我将Entity Framework用于我的模型层,并且我想连接一个PropertyChanged
事件,该事件根据属性的OldValue和NewValue更改另一个属性。我是否可以为此使用一个内置方法?
我想要的PropertyChanged
事件的基本逻辑是
if (oldValue.DefaultPropertyA == this.PropertyA)
this.PropertyA = newValue.DefaultPropertyA;
最佳答案
您具有OnPropertyChanging局部方法。在那里您将可以访问newvalue。
旧值是该时刻的属性值,因此您可以通过常规属性访问它。
代码生成文件中的结构如下所示:
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模板以将该代码注入(inject)您的媒体资源或使用“代码优先”,以便您可以直接访问
关于c# - EntityObjects是否具有允许我访问OldValue和NewValue的PropertyChanged事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8604607/