Лучшее исключение для недопустимого аргумента универсального типа ⇐ C#

Место общения программистов C#
Anonymous
Лучшее исключение для недопустимого аргумента универсального типа

Сообщение Anonymous »

В настоящее время я пишу код для UnconstrainedMelody, который имеет общие методы для перечислений.

Теперь у меня есть статический класс с набором методов, которые только предназначен для использования с перечислениями «флаги». Я не могу добавить это как ограничение... поэтому возможно, что они будут вызываться и с другими типами перечислений. В этом случае я хотел бы создать исключение, но я не уверен, какое из них выбросить.

Просто чтобы сделать это конкретным, если у меня есть что-то подобное :

Код: Выделить всё

// Returns a value with all bits set by any values
public static T GetBitMask() where T : struct, IEnumConstraint
{
if (!IsFlags()) // This method doesn't throw
{
throw new ???
}
// Normal work here
}
Какое исключение лучше всего создать? ArgumentException звучит логично, но это аргумент type, а не обычный аргумент, который может легко запутать. Должен ли я представить свой собственный класс TypeArgumentException? Использовать InvalidOperationException? NotSupportedException? Что-нибудь еще?

Я бы предпочел не создавать для этого собственное исключение, если это явно не правильно.

Подробнее здесь: https://stackoverflow.com/questions/141 ... e-argument

Вернуться в «C#»