Obecnie piszę kod dla UnconstrainedMelody, który ma ogólne metody do wyliczenia.
Teraz mam statycznych klasy z grupą metod, które są wyłącznie przeznaczone do pracy z „flagi” teksty stałe. Nie mogę dodać tego jako ograniczenia ... więc możliwe, że będą wywoływane także z innymi typami wyliczeń. W takim przypadku chciałbym zgłosić wyjątek, ale nie jestem pewien, który z nich rzucić.
Żeby zrobić ten konkret, jeśli mam coś takiego:
// 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
}
Jaki jest najlepszy wyjątek do rzucenia? ArgumentException
brzmi logicznie, ale jest to raczej argument typu niż normalny argument, który może łatwo zmylić sprawę . Czy powinienem przedstawić własną TypeArgumentException
klasę? Użyj InvalidOperationException
? NotSupportedException
? Coś jeszcze?
Bym raczej nie tworzyć własne wyjątek dla tego chyba że jest to wyraźnie, co trzeba zrobić.