c# - ReSharper 总是要求将 System.Action 更改为 System.Action<T>

标签 c# resharper

使用 VS2010 和 ReSharper 5

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

private Action ExtractFile()
{
    return delegate
    {
        MessageBox.Show("Test");
    };
}

出于某种原因,ReSharper 倾向于向我展示方法的返回类型应映射到 System.Action<T> 的更正。或其变体之一。非通用版本好像不识别! VS 遵守并且不提示这个!

当我将鼠标悬停在红色 curl 线上时,显示的工具提示显示为

Incorrect number of type parameters.
Candidates are: void System.Action(T)
void System.Action(T1, T2) ...
... and the list continues until T1-T16

有什么想法吗? See the return type highlighted by ReSharper

最佳答案

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

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

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

private Action ExtractFile()
{
    return () => MessageBox.Show("Test");
}

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

关于c# - ReSharper 总是要求将 System.Action 更改为 System.Action<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5272735/

相关文章:

c# - LINQ 的 Enumerable.Take 方法在速度方面是否与 SQL 的 TOP 相当?

c# - AsyncCallback 通过引用变量取值

c# - COM Interop 挂起会卡住整个 COM 系统。如何取消COM调用

c# - ReSharper 代码清理

c# - 单元测试 ReSharper 和 NUnit 给出不同的结果

resharper - 如何在不卸载的情况下卸载 Resharper?

c# - Visual Studio 实际上是如何进行 Excel 加载项调试的

C# SendKeys.发送

debugging - 通过 ReSharper 调试单元测试时附加到 native 代码

c# - Resharper,foreach 循环中的 linq