我正在开发一个WPF应用程序,它将引用一个主要包含业务对象的类库和一些操作这些对象的方法。由于此库与WPF一起使用,因此我需要使用INotifyPropertyChanged接口。
但是,我确实看到库中的未来用途可能不是特别依赖WPF(或者需要属性更改通知)作为表示层。在您的专业经验中,最好省略界面,以确保DLL通过寻找替代方法,或使用界面继续前进,从未必要的代码“清理”以用于未来的使用?
(显然,这可以应用于各种其他编程实践)。
感谢。
答案 0 :(得分:2)
我会省略业务层中的INotifyPropertyChanged。
如果我需要,我可以派生孩子并使他们成为INotifyPropertyChanged,或者我可以创建一个“模型”类,它可以包含我的业务对象的实例。
这也有助于将我的业务层与其他层(表示,数据访问等)分开,并允许我在我的服务器代码中使用所述对象,这些对象不需要了解有关INotifyPropertyChanged的任何信息。
答案 1 :(得分:2)
我不同意INotifyPropertyChanged行为只驻留在ViewModel中。虽然INotifyPropertyChanged在Presentation层中大量使用,但它的值超出了Presentation层。
我的每个模型通常都包含INotifyPropertyChanged行为,而不仅仅是ViewModel。
这可以归结为如果您能说服自己INotifyPropertyChanged行为可以由消费者在Presentation层外部使用,请将其保留。
答案 2 :(得分:1)
INotifyPropertyChanged实现属于ViewModels,它封装了GUI / View的状态和相关行为,因此它们很容易测试。 ViewModel属于Presentation层。所有与视图无关的可重用代码都需要下推到另一层。因此,如果您需要更换WPF,请构建一个不同的表示层,使用该层,您就可以开始使用了。下层不应该对它上面的层进行假设。所以在这一层没有INotifyPropertyChanged。