2011-07-10 10 views
1

私は50以上のプロパティを持つビジネスオブジェクト(1000+)のリストを持っています。実行する必要がある約70種類のバリデーションがあります。行く方法は検証ルールを使うことですが、私は本当にIDataErrorInfoが好きです。すべてのオブジェクトに対して同じ検証を使用している間に、IDataErrorInfoが定義されているのはメモリの浪費ですか?IDataErrorInfoはメモリの無駄ですか?

PS:私はコードを投稿しませんでした。なぜなら、見るには膨大で退屈なものでしたからです。

+0

あなたは何を恐れていますか? – SLaks

+0

パフォーマンスに問題がありますか? – Mikhail

+0

まだ、私は正しいことをしていることを確認したい]] – Wallace

答えて

2

IDataErrorInfoには、一対のプロパティが含まれています。
インスタンスごとのオーバーヘッドはありません。

よく実装されるのはあなた次第です。あまりにも難しいはずがありません。

+0

私はエラーメッセージ、正規表現、および必要なすべてのものでオブジェクトのサイズを膨らませるかもしれないと思った。たとえすべてのオブジェクトが同じ正確なロジックを使用しています。実装がうまくいくかどうかを確認することは、検証に必要なものすべてを静的にすることを意味していると思いますか? – Wallace

+1

@Wallace: 'static readonly'と' const'フィールドにregexesとエラーメッセージ文字列を格納します – SLaks

2

私は、IDataErrorInfoを使用するのではなく、組み込みのValidationRuleクラスを拡張し、それを直接バインディングで使用するという大きなファンです。

ここに私のブログ記事をチェックしてください。それが役立つかどうかは、Taking data binding, validation and MVVM to the next level - part 1です。これは、TextBoxを検証するためにそれを使用する方法に集中しますが、全く同じことがバインド可能な要素、つまりDataGridの列に適用されます。ビューモデルとモデルの検証コードを保持することができます(そのようなパターンを使用している場合)、検証はどこでも再利用でき、どの検証が適用され、どこでどこを細かく行うことができます。

+0

ModelまたはViewModelオブジェクトが複雑になると、検証が別のクラスに移動するのを助けることができます。それが元の質問にどのくらい効果的に答えるか再考したいかもしれませんか? – GrahamMc

関連する問題