gpt4 book ai didi

wpf - IDataErrorInfo 与 ValidationRule 与异常

转载 作者:行者123 更新时间:2023-12-05 01:15:21 24 4
gpt4 key购买 nike

谁能告诉我哪种 WPF 验证方法更好。

  1. 实现 IDataErrorInfo
  2. 创建验证规则
  3. 抛出异常

在性能、内存泄漏、代码可维护性和重用方面。

最佳答案

这是一个复杂的请求,老实说,它可能会因偏好而异,而不是其他任何因素。但是,这是我的理解:

  • 性能:几乎每次都会丢失异常,除非您的其他实现非常糟糕。 throw/catch 循环有很大的开销。 (轶事:我有一个“必须是一个数字”检查是一个异常,它在失败时“滞后”了 UI 一段时间,但是当转换为 ValidationRule 时它实际上是即时的。)
  • 内存泄漏:这取决于您的验证规则或 IDataErrorInfo 实现的完成方式。
  • 代码可维护性、重用:当然,这是有趣的部分。您真正应该问的是“什么时候适合使用 ValidationRule 而不是 IDataErrorInfo,反之亦然?”

ValidationRules 早于 IDataErrorInfo(我相信后者是在 .Net 3.5 中引入的)。仅基于这一点,WPF 团队似乎更喜欢 IDataErrorInfo。但事实是它们是为不同的东西而 build 的。如果您有 MVVM 或等效模式,IDataErrorInfo 更适合模型中的错误(例如负年龄),而 ValidationRules 更适合 View 中的错误(比方说,☃ 岁)。当然可以让 ValidationRules 执行“业务逻辑”检查,或者让 IDataErrorInfo 告诉您“unicode 雪人不是有效年龄”,但您(可能)会通过保持这种模式获得最佳可维护性。

但不要在初始测试之外使用异常进行验证,以查看您应该测试的确切条件。

关于wpf - IDataErrorInfo 与 ValidationRule 与异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2828618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com