IDataErrorInfo.Error应该检查每个属性吗?

8
IDataErrorInfo.Error需要检查每个属性吗?还是可以信任任何客户端调用IDataErrorInfo.Item对每个属性进行调用?
1个回答

13

IDataErrorInfo.Error 用于报告整个对象的验证状态。

例如,如果您的对象具有 StartTime 和 EndTime 属性,您可能希望 StartTime 小于 EndTime,如果违反此验证规则,则不适合为任何一个属性显示消息。

Error 属性也适用于总结对象的整体验证状态。因此,答案是否定的 - 您不应该检查每个属性。与特定属性相关的错误消息由

string this[string columnName]

索引器。

编辑:这里有一个链接,解释了该接口的使用方法。


你说的听起来很有道理,但你有什么依据吗?似乎使用反射获取所有属性进行检查会相当昂贵。 - Jonathan Allen
你可以查看微软的控件(如DataGrid)如何实现接口来响应数据。你可以观察它所做的调用。如果你仍然不确定,你可以查看http://msdn.microsoft.com/en-us/library/system.componentmodel.idataerrorinfo%28VS.95%29.aspx这个链接以及它的使用示例。 - Koynov
3
答案中的MSDN链接说:“请注意,绑定引擎从不使用Error属性,尽管您可以在自定义错误报告中使用它来显示对象级别的错误。”但是我在“Error”内部得到了一个断点命中,其中调用堆栈中有BindingExpression.TransferValue :-/ - Simon_Weaver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接