Je travaille sur un code de validation et j'ai des problèmes avec mon code Linq."Filtrer" une collection avant de lancer une requête Linq
Ce que j'ai est une classe qui valide sur un attribut particulier (ValidationAttribute). Tout fonctionne bien, c'est-à-dire que la validation fonctionne avec une classe dont certaines propriétés sont décorées avec cet attribut (ou des sous-classes). Ce que je veux maintenant faire est de dire à ma classe "validator" d'ignorer toutes les propriétés marquées avec un autre attribut (appelons cela IgnoreAttribute). Donc, ma question est, comment puis-je trouver toutes les propriétés avec l'attribut de validation (pour lequel j'ai déjà un code) mais d'abord "filtrer" cette collection pour ignorer les propriétés qui ont l'attribut ignorer (ou en fait une liste collection).
Le code pour la validation ressemble:
from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>()
from attribute in prop.Attributes.OfType<ValidationAttribute>().
where attribute.IsValid(prop.GetValue(instance)) == false
select new ...etc
Je veux ce code d'ignorer tous les attributs contenus dans une liste que j'ai dans la classe, soit une sorte de filtrage sur l'ensemble original ...
Des idées?
MISE À JOUR:
Je suppose que ma question est la suivante: Si j'ai une classe qui a ses propriétés décorées avec des attributs tels que:
class MyClass
[Required]
public string MyProp { get; set; }
[Required]
[Ignore]
public string MyProp2 { get; set; }
Comment puis-je trouver toutes les propriétés avoir l'attribut de validation (requis hérite de cela)) mais pas l'attribut ignore? Bien que je ne voulais vraiment pas ignorer une liste d'attributs et pas seulement l'attribut ignore.
Oui, ça a marché ... pourquoi n'ai-je pas pensé à ça..bummer? Merci et désolé pour la réponse tardive! –