我今天早上醒来发现一个问题!
在我的所有组件中,我都有一组业务规则,用于在将任何更改提交到存储库之前验证 DTO。
我一直在尝试找出将验证错误返回到 UI 的最佳方法,但我遇到了 IDataErrorInfo 接口。极好的!
但是,此接口的实现会将我的 DTO 转换为 POCO,并使其在内存使用方面成为更大的对象。目前,所有用户控件都绑定到当前的 DTO 对象。
将我的 DTO 转换为 POCO 会对性能产生影响吗?或者有没有更好的方法将验证消息返回到 UI?
我今天早上醒来发现一个问题!
在我的所有组件中,我都有一组业务规则,用于在将任何更改提交到存储库之前验证 DTO。
我一直在尝试找出将验证错误返回到 UI 的最佳方法,但我遇到了 IDataErrorInfo 接口。极好的!
但是,此接口的实现会将我的 DTO 转换为 POCO,并使其在内存使用方面成为更大的对象。目前,所有用户控件都绑定到当前的 DTO 对象。
将我的 DTO 转换为 POCO 会对性能产生影响吗?或者有没有更好的方法将验证消息返回到 UI?
MVVM。即,您的 DTO 包装在视图模型中,这些模型绑定到您的视图。
我一直在尝试找出将验证错误返回到 UI 的最佳方法,但我遇到了 IDataErrorInfo 接口。极好的!
绝对地。你怎么一开始不知道自己在做什么?IDataErrorInfo 有完整的文档记录——不是你应该“遇到”的东西(听起来很意外)。
此接口的实现会将我的 DTO 转换为 POCO,并使其在内存使用方面成为更大的对象。目前,所有用户控件都绑定到当前的 DTO 对象。
DTO 绝对不知道内部错误——它不应该永远有内部错误。请看,DTO 是“数据传输对象”,而不是“业务对象”。DTO 是业务对象应该生成以将其发送到 DataAccessLayer,不应该进行验证的原因是业务对象确保只有有效的对象创建 DTO。
顺便提一句。,
会将我的 DTO 转变为 POCO
我还有另一个惊喜发现 - 你的 DTO 已经是 POCO。POCO 是“Plain Old CLR Object”,我猜你的 DTO 是作为 .NET 类建立的,所以 - 你猜怎么着,令人惊讶的是,它们已经是 POCO。
您的意思(再次发现)是它将您的 DTO 转换为 BO。
或者有没有更好的方法将验证消息返回到 UI?
不,那里没有。将消息发送到 UI 的最佳方式是通过 UI 定义的接口,而 IDataErrorInfo 就是这样。
您的问题是您对以下内容有很大的困惑:
请参阅POCO vs DTO的答案,了解您实际混淆的内容。
回到绘图板。作为您的首席开发人员/架构师,向您介绍多层架构并阅读 .NET 文档。
DTO 不应该处理 DataTransfer 问题。