Asp.net 在域对象上更改属性

本文关键字:属性 对象 net Asp | 更新日期: 2023-09-27 18:33:54

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

我有一个用于 silverlight 和 WebForms 系统的通用域层。为了使 silverlight 获得所有绑定魔法,域现在执行属性通知。

我的网络表单系统似乎没有受到影响(一切仍然有效(,但我担心幕后发生了一些我不明白的事情。

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

用ComponentModel的东西污染我的领域确实感觉很丑陋。

Asp.net 在域对象上更改属性

如果没有人订阅该事件,那么提出该事件将不会发生任何事情。

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

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

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

首先要指出的是,Silverlight 中的 UI 不应绑定到域对象。事实上,您的视图绑定到视图模型,并且此视图模型应包含模型。

UI 模型 != 域模型

用ComponentModel的东西污染我的领域确实感觉很丑陋。

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

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

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

有一些工具可以帮助您毫不费力地完成此映射,例如自动映射器

相关文章: