ReSharper:什么是“捕获命名空间名称”?

问题描述 投票:0回答:1

我在某处有这行代码:

Sys.Attribute? testClassAttribute = Helpers.TryGetAttributeByFullName( type,
        "Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute" );

当我选择字符串文字并按下 ReSharper 建议键时,最上面的建议是“捕获命名空间名称”。

我已经使用 ReSharper 多年了,以前从未见过这个建议。

巴金斯大师,你真是充满惊喜。

当我选择这个选项时,似乎什么也没有发生。

(这有点可怕:你必须想知道是否在某个地方发生了某些事情,而你只是看不到它。)

所以我去谷歌搜索

resharper "capture namespace name"
。谷歌表示没有任何结果,并恢复了不带引号的搜索,可以预见,结果是无用的。事实上,当我单独搜索
"capture namespace name"
时,谷歌也说了同样的话。

因此,显然在可见宇宙中的任何地方都没有关于此 ReSharper 功能的任何文档。

有人知道这个 ReSharper 功能实际上是做什么的吗?

c# refactoring resharper
1个回答
0
投票

ReSharper 中的“捕获命名空间名称”功能是一个相对晦涩且不太常用的功能。它用于捕获所选类型或标识符的命名空间名称,并自动为该命名空间引入 using 指令。

其工作原理如下:

  1. 选择命名空间名称: 当您在代码中选择了类型或标识符,并且调用 ReSharper 建议时,如果建议“捕获命名空间名称”,则意味着 ReSharper 会自动检测并为包含所选类型的命名空间引入

    using
    指令或标识符。

  2. 介绍使用指令: 选择“捕获命名空间名称”选项通常会导致 ReSharper 分析所选类型的命名空间,并在必要时在文件顶部添加

    using
    指令。当您处理来自不同命名空间的类型并且您希望 ReSharper 为您管理
    using
    指令时,这会很有帮助。

    例如,如果你有这样的课程:

    namespace MyNamespace
    {
        public class MyClass { }
    }
    

    如果您选择了

    MyClass
    并选择“捕获命名空间名称”,ReSharper 可能会自动添加:

    using MyNamespace;
    

    位于文件顶部(如果文件尚不存在)。

  3. 验证: 您可能没有注意到立即发生的更改,因为 ReSharper 可能已确定所需的

    using
    指令已存在于您的文件中。在这种情况下,它不会重复该指令。

虽然此功能在某些情况下很有用,但它可能不像其他一些 ReSharper 功能那样常用。如果您的代码库组织良好并且您已经仔细管理您的

using
指令,您可能不会经常遇到此建议。

如果您对选择“捕获命名空间名称”后 ReSharper 执行的操作感到好奇,您可以检查代码文件的顶部,看看是否添加了新的

using
指令或是否修改了现有指令。这是一个微妙但方便的功能,用于维护干净且有组织的代码。

© www.soinside.com 2019 - 2024. All rights reserved.