2011-07-10 46 views
1

我有一个业务对象(1000+)的列表,具有50左右的属性,他们有大约70个不同的验证需要执行。似乎要走的路是使用验证规则,但我真的很喜欢IDataErrorInfo。是否为每个对象定义IDataErrorInfo而他们一直使用相同的验证会浪费内存?IDataErrorInfo是否浪费内存?

PS:我没有发布代码,因为它看起来很庞大而繁琐。

+0

你害怕什么? – SLaks

+0

您是否遇到过性能问题? – Mikhail

+0

还没有,只是想确保我做正确的事情=] – Wallace

回答

2

IDataErrorInfo只是包含一对属性。
它没有每个实例的开销。

这是由你来做一个很好的实现;不应该太难。

+0

我想我可能会膨胀与错误消息,正则表达式和我需要的所有其他东西的对象的大小。尽管所有对象都使用相同的逻辑。我想确保实现的执行情况良好,意味着让我需要的所有验证工作都是静态的? – Wallace

+1

@Wallace:在'static readonly'和'const'字段中存储正则表达式和错误消息字符串 – SLaks

2

我非常喜欢扩展构建在ValidationRule类中并直接在绑定中使用它,而不是使用IDataErrorInfo。

查看我的博客文章,看看有没有帮助:Taking data binding, validation and MVVM to the next level - part 1。这着重于如何使用它来验证TextBox,但是同样的事情适用于任何可绑定元素,即DataGrid上的列。它给你的好处是你可以保留视图模型和模型中的验证代码(如果你使用的是这种模式),验证可以在任何地方重用,而且你可以非常精确地应用验证和应用。

+0

当Model或ViewModel对象变得复杂时,它确实可以帮助将可用性验证移出到单独的类 - 所以我喜欢这个答案!可能想重新考虑它如何有效地回答原始问题? – GrahamMc