Lorsque vous définissez la valeur d'une propriété, vous pouvez la valider avant ou après la mise à jour de la valeur interne. En cas de validation antérieure, vous pouvez lever une exception si la nouvelle valeur n'est pas valide. L'objet est alors toujours dans un état valide.Comment valider une propriété d'un objet personnalisé dans un scénario de liaison de données (c'est-à-dire BindingList)?
Si la validation après annulation est souhaitée (par exemple par l'intermédiaire d'IEditableObject), de sorte que l'utilisateur peut annuler la modification à tout moment. Nous avons également la possibilité de lancer une exception ici ou d'exposer les erreurs via IDataErrorInfo.
Je ne pense pas IDataErrorInfo est logique si la validation avant l'ensemble. Certains peuvent également prétendre que lancer une exception n'est pas justifié dans les scénarios de validation.
La validation après les travaux est excellente dans les scénarios où l'objet personnalisé est contenu dans BindingList et défini comme source de données dans une grille.
Validation fonctionne avant ok avec des grilles aussi, mais vous avez sorte de jeter une exception pour signaler le réglage de la valeur de la propriété a échoué à la grille de données (sans beaucoup de code supplémentaire)
Je suis aussi pas à l'aise avec mes objets de domaine mise en œuvre IEditableObject et IDataErrorInfo, INotifyPropertyChanged, etc. Il laisse l'objet de domaine encombré avec des préoccupations supplémentaires. Mais cela semble inévitable si vous voulez vous positionner avec la liaison de données. Je pourrais peut-être créer un wrapper, DTO peut-être, mais je ne suis pas trop fou d'avoir à écrire du code supplémentaire pour la plupart du temps juste pour supporter ces bits de liaison de données.
Comment validez-vous les objets (de préférence dans le contexte de la liaison de données et de l'interface utilisateur)?
J'avais trouvé le blog de Paul Stovell avant d'écrire ce q et c'est là que je me suis retrouvé dans un dilemme, que ce soit pour suivre son approche ou non. En effet, j'ai fini par utiliser son approche. Ma mise en œuvre est un peu plus complexe que je n'aime pas, mais inévitable. Je ne suis toujours pas totalement convaincu que c'est la voie à suivre mais je n'ai pas trouvé d'alternative qui soit meilleure. –