时间:2018-05-22 12:18:56

标签: c# visual-studio resharper

我想更改一个案例的检查严重性

说我有一个枚举

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次,但是......有点难看

UPD3 不幸的是现在没办法(22.05.2018) Comment 1 Comment 2

2 个答案:

答案 0 :(得分:1)

不幸的是现在没有办法(22.05.2018)通过简单的评论

答案 1 :(得分:0)

如果我理解正确,您只需点击Resharper灯泡并配置它以添加缺失的案例和严重性(错误), enter image description here