Asp.net INotifyPropertyChanged在域对象上

如果asp.net中的域对象实现了INotifyPropertyChanged并触发了属性setter上的PropertyChanged事件,会发生什么?

我有一个用于Silverlight和WebForms系统的公共域层。 为了让silverlight获得所有绑定魔法,域名现在会进行属性通知。

我的webforms系统似乎没有受到影响(一切仍然有效)但我担心幕后发生的事情我不明白。

我可以创建一个扩展原始域对象的silverlight特定域层,并覆盖属性以进行通知,但这是必要的吗? 即我是否无缘无故地添加了额外的代码层。

使用ComponentModel对我的域进行污染确实感觉很难看。

没有错可能会发生,但这不是最好的方法..

我可以创建一个扩展原始域对象的silverlight特定域层,并覆盖属性以进行通知,但这是必要的吗? 即我是否无缘无故地添加了额外的代码层。

首先要指出的是,Silverlight中的UI不应该绑定到Domain Objects。 实际上,您的视图绑定到ViewModel,并且此视图模型应包含Models。

UI模型!=域模型

使用ComponentModel对我的域进行污染确实感觉很难看。

如果在域模型中添加表示逻辑,那么业务逻辑层可能会变得混乱,并且由于它与表示层耦合,因此会丢失抽象。 想象一下,在2年内你转向另一个需要模型中特殊逻辑的Web框架,你会在业务对象中添加更多逻辑吗?

在我看来,域模型应该与其他层隔离,不应该依赖于技术(在这种情况下,Silverlight)

我会添加一个新的图层,将您的域对象转换为Silverlight模型。 这可能看起来像一个开销,但这样你的系统将是干净的,并具有清晰的隔离层。

有些工具可以帮助您轻松完成此映射,例如AutoMapper

如果没有人订阅这个事件,那么由于提出它就不会发生任何事情。

服务器端ASP.NET应用程序不太可能订阅这些事件,这解释了为什么没有发生任何事情。