我想更改一个案例的检查严重性
说我有一个枚举
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 :我不想要设置全局检查严重性
UPD2 我有50个开关(在其他枚举上),其中丢失的情况不是什么大问题,只有几个开关,其中缺少的情况应该是编译错误。可以将全局级别设置为错误并禁用错误50次,但是......有点难看