在解决方案中查找方法组语法的用法

时间:2014-06-16 14:44:07

标签: c# resharper

我正在尝试在我的解决方案中识别“方法组”语法的用法。原因是Resharper试图帮助ConvertClosureToMethodGroup代码检查。问题是,“优化”代码不会编译为相同的IL代码,这意味着它在我的特定场景中中断。下面的场景不会中断,但它说明了我想要找到的内容:

void Main()
{
    var arr = new string[]{"foo"};

    //This works
    var bar = arr.Select(s=>MyMethod(s));

    //Resharper suggests the below, which is different
    //var bar = arr.Select(MyMethod);

}

string MyMethod(string s)
{
    return "bar";
}

那么:有没有办法,我可以识别我的代码中的所有位置,哪个方法作为方法组传递?

我可以禁用重构建议以防止将来使用此功能,但如何确定已经发生这种情况的位置?

编辑1:此重构破坏运行时的示例

void Main()
{
    MyClass obj = null;

    //This works
    var lazy = new Lazy<bool>(()=> obj.MyMethod());

    //This will break at runtime when obj is null
    //var lazy = new Lazy<bool>(obj.MyMethod);

}

class MyClass
{
    public bool MyMethod()
    {
        return false;
    }
}

0 个答案:

没有答案