2010-12-11 25 views
1

Je suis désolé si cela a déjà été demandé, j'ai essayé plusieurs combinaisons de mots-clés pour décrire le problème, mais je n'ai trouvé aucun élément sur Google ou SO.Problèmes avec l'héritage et la validation du bloc d'application ObjectCollectionValidator

Le problème est simple: et j'ai une liste d'objets. J'ai marqué cette liste avec ObjectCollectionValidator afin que les objets soient validés. Certains objets de la liste ne sont cependant pas de type T, mais de type dérivé.

Ces types dérivés ont des propriétés non présentes sur leurs parents qui doivent être validées. Ils ne le feront tout simplement pas. Je crois que VAB ne vérifie pas les types hérités en traitant avec ObjectCollectionValidator, mais c'est une faille à mon avis, donc j'espère que je me trompe. Par ailleurs, j'utilise le 4.1 d'EntLib (et pendant que je le voulais, je ne pouvais pas passer à EntLib 5.0).

Répondre

2

Ce à quoi vous êtes témoin est une anomalie de conception de VAB 4.1 qui a été résolue dans VAB 5.0. Dans VAB 5.0, lorsque vous décorez une propriété de collection avec un ObjectCollectionValidatorAttribute, vous pouvez ignorer le type réel et, dans ce cas, le validateur validera les objets par leur type réel.

Si vous ne pouvez pas passer à VAB 5.0, la seule chose que vous pouvez faire est d'écrire votre propre validateur de collection d'objets. Ce n'est pas vraiment difficile. Il suffit de regarder la source de ObjectCollectionValidatorAttribute et ObjectCollectionValidator de VAB 5.0.

Bonne chance.