2009-03-26 14 views
0

J'ai rencontré le problème avec la validation du proxy NHibernate en utilisant le composant Castle.Validator. Il semble que le validateur n'a pas pu extraire les attributs des propriétés du proxy de l'entité.Les proxies NHibernate empêchent le composant Castle.Validator de faire son travail

J'ai essayé de définir la validation des attributs en utilisant = true Héritée tout coureur Castle.Validator em en utilisant chercher la déclaration suivante:

property.GetCustomAttributes(typeof(IValidatorBuilder), true); 

il devrait donc chercher mes attributs forment des entités alors qu'ils sont des classes techniquement base pour objet en cours de validation (proxy)? Pourquoi ça ne marche pas? GetCustomAttribute retourne toujours un tableau vide.

Répondre

0

Les attributs sont corrects car ils font vraiment partie du modèle de domaine.

Je pense avoir trouvé une solution au problème. J'ai corrigé Castle.Validator pour faire cette pensée. Il est fou, mais ce code:

property.GetCustomAttributes(true /*inherit*/); 

retourne un tableau vide, alors à mon humble avis un code entièrement équivalent renvoie les attributs:

System.Attribute.GetCustomAttributes(property); 

Ce que le @ # $%?

2

La même chose m'est arrivée. Le problème est que NHibernate n'hérite pas des attributs lors de la création des proxys. Tout ce que j'ai trouvé est ce forum post dans lequel le problème est reconnu et donne une solution simple (ne pas utiliser de proxies lors de la validation) et c'est ce que j'ai fini par faire. Puis-je recommander cette bibliothèque de validation: Fluent Validation, je ne l'ai pas encore utilisé mais je prévois de le faire, principalement parce que je suis fatigué d'utiliser des attributs (à cause de problèmes comme celui-ci).