2010-03-04 7 views
2

J'utilise la validation par attributs, et je voudrais limiter ce qui peut être entré dans ces attributs.Limiter un paramètre typeof() sur un attribut à des types spécifiques uniquement ... est-ce possible?

ex:

ThisValidatesSomethingAttribute(Type typeOfExceptionToThrowOnFailure) 

donc sur l'utilisation, il est

[ThisValidatesSomething(typeof(MassiveFailureException))] 
public int SomeIntParameter() 

est-il un moyen de limiter les types qui peuvent être saisis dans cet attribut?

Je veux limiter le paramètre de type à être les types seulement qui dérivent de dire peut-être une classe de base nommée « SuperSpecialBaseException »

Dans génériques, je voudrais simplement utiliser une contrainte de type « où T: SuperSpecialBaseException » mais bien sûr, ce n'est pas générique (limitation joyeuse d'attribut)

Répondre

2

Pas comme une fonctionnalité de compilation. Cela équivaut à n'accepter que les paramètres int entre 10 et 20; ce type de vérification doit être effectué dans votre code, il ne peut pas être déclaré.

0

Non, il n'y a pas moyen de le faire au moment de la compilation. Vous devrez effectuer la validation du paramètre à l'exécution.

Questions connexes