Je suis actuellement en train d'écrire du code pour UnconstrainedMelody qui possède des méthodes génériques pour les enums.
Maintenant, j'ai une classe statique avec un tas de méthodes qui sont seulement destiné à être utilisé avec les enums "flags". Je ne peux pas ajouter cela comme une contrainte... donc il est possible qu'ils soient appelés avec d'autres types d'enum. Dans ce cas, j'aimerais lancer une exception, mais je ne sais pas laquelle lancer.
Juste pour que ce soit concret, si j'ai quelque chose comme ça :
// Returns a value with all bits set by any values
public static T GetBitMask<T>() where T : struct, IEnumConstraint
{
if (!IsFlags<T>()) // This method doesn't throw
{
throw new ???
}
// Normal work here
}
Quelle est la meilleure exception à lancer ? ArgumentException
semble logique, mais c'est un type plutôt qu'un argument normal, ce qui pourrait facilement embrouiller les choses. Devrais-je introduire mon propre TypeArgumentException
classe ? Utilisez InvalidOperationException
? NotSupportedException
? Autre chose ?
Je plutôt ne pas créer ma propre exception pour cela, sauf si c'est clairement la bonne chose à faire.