谁能告诉我哪种方法是WPF验证的更好方法。IDataErrorInfo vs验证规则与异常
- 实施IDataErrorInfo的
- 创建有效性规则
- 抛出异常
在性能,内存泄漏,代码的可维护性和再利用方面。
谁能告诉我哪种方法是WPF验证的更好方法。IDataErrorInfo vs验证规则与异常
在性能,内存泄漏,代码的可维护性和再利用方面。
这是一种复杂的请求,说实话,它可能会根据偏好而不同。但是,这是我的理解:
ValidationRules比IDataErrorInfo还旧(我相信后者是在.NET 3.5中引入的)。仅凭这一点,似乎WPF团队更喜欢IDataErrorInfo。但事实是,他们是为不同的事情而建造的。如果您有MVVM或等效模式,那么IDataErrorInfo在模型(例如负数年龄)中的错误优于错误,而验证规则在视图(例如,年龄为1/8)中的错误优越。当然可以让ValidationRules执行“业务逻辑”检查,或让IDataErrorInfo告诉你“unicode雪人不是一个有效的年龄”,但是你可能(可能)通过保持这种模式来获得最佳的可维护性。
但是,除了初始测试之外,不要使用异常进行验证,以查看您应该测试的确切条件。
使用异常进行错误处理不是个好主意。使用异常会降低性能。这是选择和实现IDataErrorInfo或创建验证规则的问题。
IDataErrorInfo的
验证规则
我的意见是,对于常见验证,如需要的字段验证,电子邮件地址验证您可以使用验证规则。如果您需要执行自定义验证(如范围验证),或者使用IDataerrorinfo进行自定义验证。
今天读到了IDataErrorInfo - 看起来比ValidationRule早 - 看起来IDataErrorInfo接口自Framework 1.1以来一直存在(http://msdn.microsoft.com/zh-cn/library/system.componentmodel.idataerrorinfo_properties (v = VS.71).aspx),但自Framework 3.0以来的ValidationRule。不要认为它从根本上改变了你的答案 – GrahamMc 2011-10-03 16:18:04