INotifyPropertyChanged - 数据访问,业务或UI层

时间:2017-10-03 00:17:18

标签: c# .net wpf mvvm inotifypropertychanged

我们和一些同事之间就实现INotifyPropertyChanged的最佳层进行了一些讨论。这是场景:

  • 数据访问层返回简单对象的集合
  • 业务层按摩对象并执行额外验证等
  • UI图层绑定到对象并使用INotifyPropertyChanged进行更改跟踪

这里的场景是DA层返回的数据与UI层消耗的数据相同。我们是否在UI层中实现了INotifyPropertyChanged,因此在不同的层中具有相同对象的多个近克隆,或者我们是否在DA层中实现了INotifyPropertyChanged,从而为不涉及属性更改跟踪的层添加了不必要的复杂性。 p>

关注:

  • 为DA提供单独的对象,业务和UI层是干净的,但增加了大量的冗余
  • 在DA中实现INotifyPropertyChanged感觉不对,因为DA不关心这个概念,可能会耦合DA和UI层

我在这种情况下的个人偏好是:

public class DaObject
{
    public virtual string Value { get; set; }
}

// May or may not need a business object here. DA and UI may be enough.
public class BusinessObject : DaObject
{
    // Business layer logic/validation here...
}

public class UiObject : BusinessObject, INotifyPropertyChanged
{
    public override string Value
    {
        get { return base.Value; }
        set
        {
            base.Value = value;
            NotifyOfPropertyChanged(nameof(Value));
        }
    }

    // INotifyPropertyChanged implementation here...
}

谢谢!

0 个答案:

没有答案