SmartTag用于添加"使用"扩展方法声明

时间:2014-05-26 14:10:28

标签: c# ide extension-methods

假设我有以下代码需要移动到另一个文件/类:

namespace MyNamespace
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;


    class Class1
    {
        public void SomeMethod()
        {
            IEnumerable<int> l = new List<int>();

            if (l.Count() == 0)
            { 
                //...
            }
        }
    }
}

如果我将SomeMethod移动到另一个没有(例如)using System.Linq声明的类(在另一个文件中),l.Count()语句将无法编译,给出非常明显的消息:

'System.Collections.Generic.IEnumerable<int>' does not contain a definition for 'Count' and no extension method 'Count' accepting a first argument of type 'System.Collections.Generic.IEnumerable<int>' could be found (are you missing a using directive or an assembly reference?)

如果新的类/文件没有using System.Collections.Generic声明,并且您将光标放在IEnumerable<int>上,您将获得一个建议可能使用声明的SmartTag。如果您将光标放在Count()分机呼叫上,则无法通过SmartTag建议using System.Linq声明。

是否有一个IDE扩展可以帮助添加扩展方法的using语句,如上所述?这有助于分配重构代码。

1 个答案:

答案 0 :(得分:0)

我找到了一个免费的解决方案: 下载并安装DevExpress CodeRush Express,然后下载并安装CR_ExtensionMethodsHelper community plugin

您还可以尝试以下商业产品(非免费):

  1. DevExpress CodeRush(使用CR_ExtensionMethodsHelper community plugin;虽然有request pending本地支持此插件)
  2. ReSharper(我不会自己使用这个,但其他人已建议)