Лучшее исключение для недопустимого аргумента универсального типа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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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