0

What happens if a domain object in asp.net implements INotifyPropertyChanged and fires off the PropertyChanged event on the property setters?

I have a common domain layer for both a silverlight a WebForms system. For silverlight to get all the binding magic, the domain now does property notifications.

My webforms system doesn't seem to be affected (everything still works) but I am worried that something is happening behind the scenes that I don't understand.

I could make a silverlight specific domain layer that extends the original domain objects, and overrides the properties to do notifications, but is this necessary? i.e. am I adding an extra layer of code for no reason.

Polluting my domain with ComponentModel stuff does feel ugly.

4

2 回答 2

4

如果没有人订阅该事件,那么引发它就不会发生任何事情。

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

于 2013-10-03T08:19:44.453 回答
1

可能不会发生任何错误,但这不是最好的方法..

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

首先要指出的是,您在 Silverlight 中的 UI 不应绑定到域对象。实际上,您的视图绑定到一个 ViewModel,而这个 viewmodel 应该包含模型。

UI模型!=领域模型

用 ComponentModel 的东西污染我的域确实很难看。

如果您在领域模型中添加表示逻辑,您的业务逻辑层可能会变得一团糟,并且您会失去抽象,因为它与表示层耦合。想象一下,在 2 年内,您迁移到另一个需要模型中特殊逻辑的 Web 框架,您会在业务对象中添加更多逻辑吗?

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

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

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

于 2013-10-03T08:24:13.653 回答