Я хочу изменить уровень проверки для одного случая
Скажем, у меня есть enum
enum MyEnum { First, Second, Third }
, а затем переключатель
void Foo(MyEnum value)
{
// Looking for something like
// Resharper once severity:error SwitchStatementMissingSomeCases
switch (value)
{
case MyEnum.First:
// do something
break;
case MyEnum.Second:
// do something else
break;
// <<< Missing MyEnum.Third
default:
throw new ArgumentOutOfRangeException();
}
}
Я хочу, чтобы этот кодвыдать ошибку компиляции.Возможно ли это?
Я понимаю, что можно сделать что-то вроде кода ниже, но я хочу знать, что во время компиляции отсутствует пропущенный случай
void Bar()
{
// do something
}
void Baz()
{
// do something else
}
Dictionary<MyEnum, Action> Handlers = new Dictionary<MyEnum, Action>
{
[MyEnum.First] = Bar
[MyEnum.Second] = Baz
}
void Foo(MyEnum value)
{
if (! Handlers.TryGetValue(value, out Action action))
throw new ArgumentOutOfRangeException();
action();
}
UPD : I не хочу установить серьезность глобальной проверки
UPD2 У меня есть 50 переключателей (для других перечислений), где отсутствующий регистр не имеет большого значения итолько пара ключей, где пропущенный регистр должен быть ошибкой компиляции.Можно установить глобальный уровень на ошибку и отключить ошибку 50 раз, но ... немного некрасиво
UPD3 К сожалению, сейчас нет способа сделать это (22.05.2018) Комментарий 1 Комментарий 2