C# ReSharper总是要求更改系统。一个操作一个系统。操作<;T>;

C# ReSharper总是要求更改系统。一个操作一个系统。操作<;T>;,c#,resharper,C#,Resharper,使用VS2010和ReSharper 5 我有一个返回System.Action的方法 private Action ExtractFile() { return delegate { MessageBox.Show("Test"); }; } 由于某种原因,ReSharper倾向于向我显示一个更正,即方法的返回类型应该映射到System.Action或其变体之一。它似乎无法识别非通用版本!VS遵守并没有对此抱怨 当我将鼠标移到红色卷曲线上时,显示的工具

使用VS2010和ReSharper 5

我有一个返回System.Action的方法

private Action ExtractFile()
{
    return delegate
    {
        MessageBox.Show("Test");
    };
}
由于某种原因,ReSharper倾向于向我显示一个更正,即方法的返回类型应该映射到
System.Action
或其变体之一。它似乎无法识别非通用版本!VS遵守并没有对此抱怨

当我将鼠标移到红色卷曲线上时,显示的工具提示显示

类型参数的数量不正确。
候选项为:无效系统。行动(T)
无效系统动作(T1,T2).
... 该列表将持续到T1-T16


有什么想法吗?

在我看来,您需要将ReSharper更新到最新版本,即5.1版。如果您有未由ReSharper加载的项目(即,检查排除的项目列表),则它会将这些项目标记为未知,即使您的代码是合法的并引用了这些项目

您可以尝试清除缓存或重置默认设置

您的屏幕截图在“delegate”下没有显示卷曲线,但在默认设置下,它应该建议您按如下方式重写代码(但这并不一定更好):


如果全部失败,请单击左侧的小灯泡(或按Alt+Enter)。选择“检查选项…”并更改严重性或选择忽略。

此处相同。请在委托中显示代码。@Daniel:在委托中,我调用了SaveFileDialog,我需要进一步构建它。但我不认为这会造成问题。为了确认,我刚刚添加了一个MessageBox.Show(“Test”);但ReSharper仍然抱怨,好像这是一个错误。VS可以毫无问题地构建和执行它。请展示一些重现问题的真实代码。很明显,在任何情况下都不会出现问题,因为我们无法复制它。我想知道这是否是因为它是一个实例方法,因此它建议理想情况下应该将类实例传递给它?我不知道——只是猜测而已!很遗憾听到这个消息。也许ReSharper的支持会有所帮助。我确实执行了“清除缓存”,然后重新安装了ReSharper。以确保我自定义的每个设置都恢复为原始设置(默认设置)。还不走运。感谢RS的更新建议,成功了!红色卷曲下划线不再让我烦恼了+1投票并标记为答案!
private Action ExtractFile()
{
    return () => MessageBox.Show("Test");
}