为什么CodeRush在检测哪些命名空间别名是必要的时候不一致?

时间:2016-03-18 15:40:49

标签: visual-studio namespaces alias excel-interop coderush

我有这个:

using Excel = Microsoft.Office.Interop.Excel;
. . .
private Excel.Application _xlApp;
private Excel.Workbook _xlBook;
private Excel.Sheets _xlSheets;
private Excel.Worksheet _xlSheet;
CodeRush称“Excel”。对于_xlBook,_xlSheets和_xlSheet(但不是_xlApp)是多余的(“冗余类型限定符”),所以我删除了它们:

private Excel.Application _xlApp;
private Workbook _xlBook;
private Sheets _xlSheets;
private Worksheet _xlSheet;

然而,在尝试编译时,我得到了错误的信息,如:

找不到类型或命名空间名称'Sheets'(您是否缺少using指令或程序集引用?)

因此,遵循CodeRush的建议打破了构建(当然,很容易恢复到编译状态),但对我来说更有趣的是它为什么不建议我删除“Excel”。来自“Excel.Application _xlApp”

为什么它会识别出“Excel”。应用程序需要前缀,但工作簿,表格和工作表不需要前缀吗?

更新

FWIW,CodeRush的其他推荐更改也破坏了我的构建(如下所示);另外,当我运行“Code Cleanup”或一些这样的命令时,它在我的代码中的各个地方添加了大量的空格。我已经卸载了CodeRush。对于我的钱,Resharper在比较这两种工具时是一个明确而果断的主力。

当命名空间需要一个前缀时CodeRush没有意识到的另一个实例(没有双关语)是这样的:

namespace RoboReporter.DeliveryPerformance
{
    public class DeliveryPerformance

......它建议删除“RoboReporter”。像这样:

namespace DeliveryPerformance
{
    public class DeliveryPerformance

...但是当我这样做时,它认为对DeliveryPerformance的引用(特别是“List< DeliveryPerformance>”)指向的不是类,而是指向命名空间。

0 个答案:

没有答案