4 votes

Quelle est la meilleure pratique pour signaler une erreur dans un paramètre de type ?

Existe-t-il une meilleure pratique particulière ou une autre recommandation pour signaler un paramètre de type invalide d'une méthode générique dans .NET ?

(Exemple concret : J'ai une méthode avec la signature

public static T GetRoles<T> (this WindowsIdentity id) where T: struct

Je réfléchis ensuite à T pour m'assurer qu'il s'agit (a) d'un Enum, et (b) du bon type d'Enum, puisque ce n'est pas une contrainte que je peux utiliser dans la clause where).

Pour la plupart des erreurs de paramètres, je ferais ce qui est évident et lancerais une ArgumentException avec le nom du paramètre et le message appropriés, sauf qu'un paramètre de type n'est pas un argument normal, et qu'en essayant de lancer une nouvelle ArgumentException ("oops", "T") fait que l'analyseur de code se plaint que le nom du paramètre, eh bien, n'en est pas un. Cela ne m'arrêtera pas s'il n'y a pas une meilleure façon de faire, bien sûr, mais s'il y a une pratique spécifiée ou recommandée dans ce domaine, j'aimerais savoir ce que c'est.

1voto

MarkG Points 986

La contrainte d'une énumération peut être réalisée de manière adéquate en vérifiant l'existence de l'interface convertible :

where T : struct, IConvertible

Cela devrait vous épargner une partie du travail de réflexion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X