2010-01-13 13 views
0

Dans ASP.NET MVC, nous pouvons utiliser l'espace de noms System.ComponentModel.DataAnnotations pour faciliter la validation des entrées de formulaire/modèle. Si je ne voulais pas être lié à un framework spécifique, c'est-à-dire xVal, EntLib Val Block, etc. et que je voulais créer des classes wrapper pour protéger mon code de la dépendance directe, comment cela se ferait-il? Donc, à la place de ma propriété de modèle qui ressemble à ceci:Comment créer des wrappers pour les attributs de propriété?

Je veux qu'il soit lié à mon code où le cadre de validation préféré sera mis en œuvre.

[MyRequired] 
property string Name {get;set;} 

Répondre

1

Une façon de le faire est de dériver votre attribut des sous-jacents. EG:

public class MyRequiredAttribute : EntLib.RequiredAttribute { } 

De cette façon, vous pouvez modifier ultérieurement la classe MyRequiredAttribute pour dériver d'une classe de base différente, et le reste de votre code ne serait pas nécessaire de changer (vous auriez probablement besoin cependant recompiler). Le code EntLib (etc) qui analyse pour EntLib.RequiredAttribute devrait toujours choisir votre attribut dérivé up

Cela dépend de l'attribut sous-jacente n'étant pas scellé si.