我将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/

10-10 16:48