检查 Visual Studio 中的使用指令引用
Check using directive reference in Visual Studio
EDIT3:由于 BahJiy
,重写了问题以供将来参考
是否有像 "Find Usages" 这样的 Visual Studio(或 ReSharper)命令来从 using 指令中查找 class 用法?
Find Usages 仅显示命名空间本身的引用(因此 "the only usage" 如下图所示)。
当我按照下面注释掉 using System.Reactive.Linq
行时,Observable
表示错误,它在当前上下文中不存在。
我可以注释掉using指令并像上面一样检查错误,有没有比一个一个检查错误更好的方法?
答案:查找用法可以,光标位置很重要
正如下面对答案的评论中提到的,光标位置需要在 using
,而不是命名空间。
旧题体
是否有 Visual Studio(或 ReSharper)命令告诉我哪些方法来自使用文件中 using SomeNamespace.SomeClass
定义的 SomeNamespace.SomeClass
?
当我遇到一些意外的命名空间时,我想检查用例。
Find Usages or All References on the using 指令只显示其他指令。
我可以删除非常有用的指令并检查文件中的错误,但我一定不知道更好的方法...
编辑 + 编辑 2:
一个例子可能有助于更好地阐明情况。
SomeClass.cs
namespace SomeNamespace {
public static class SomeClass {
public static string SomeExtensionMethod(this string s){
// some implementation
}
/*
More extension methods
*/
}
}
Consumer.cs
using SomeNamespace.SomeClass
namespace OtherNamespace {
public class Consumer {
public void Consume(){
string id = "someid";
string after = id.SomeExtensionMethod;
}
/*
More extension methods from SomeClass used
*/
}
}
问题是,当我发现某些 Consumer
具有 using SomeNamespace.SomeClass
时,检查底层方法使用位置的最佳方法是什么?
有没有类似于Find Usages的命令可以获取Consumer
下SomeNamespace.SomeClass
的所有方法class?
通常只检查您的使用情况。 Visual Studio 只允许来自一个命名空间的 method/class 调用。如果您正在使用的多个命名空间中还有另外两个同名方法,Visual Studio 将强制您在调用中指定命名空间说明。
即
using Name1;
using Name2;
namespace Class1 {
class Testing {
public Testing {
// this method only exists in Name1
Method1 ( );
// this method exist in both Name1 and Name2
Name1.Method2 ( );
Name2.Method2 ( );
}
}
}
所以如果你只看到
using SomeNamespace;
您会知道任何可能来自该命名空间的 classes 都特别来自 SomeNamespace。
如果有另一个 class 同名但也在不同的命名空间中,Visual Studio 将强制您在调用时输入该命名空间。
所以如果你看到你的使用是正常的,没有随机的
RandomNamespace.Class1 class1 = new RandomNamespace.Class1 ( );
你肯定知道没有什么是异常的。
您想知道是否需要导入导入的命名空间,因为使用了该命名空间中的类型?如果它在插件 "Productivity power tools" 中查看,例如有一个选项可以在保存时删除和排序使用
EDIT3:由于 BahJiy
,重写了问题以供将来参考是否有像 "Find Usages" 这样的 Visual Studio(或 ReSharper)命令来从 using 指令中查找 class 用法?
Find Usages 仅显示命名空间本身的引用(因此 "the only usage" 如下图所示)。
当我按照下面注释掉 using System.Reactive.Linq
行时,Observable
表示错误,它在当前上下文中不存在。
我可以注释掉using指令并像上面一样检查错误,有没有比一个一个检查错误更好的方法?
答案:查找用法可以,光标位置很重要
正如下面对答案的评论中提到的,光标位置需要在 using
,而不是命名空间。
旧题体
是否有 Visual Studio(或 ReSharper)命令告诉我哪些方法来自使用文件中 using SomeNamespace.SomeClass
定义的 SomeNamespace.SomeClass
?
当我遇到一些意外的命名空间时,我想检查用例。
Find Usages or All References on the using 指令只显示其他指令。
我可以删除非常有用的指令并检查文件中的错误,但我一定不知道更好的方法...
编辑 + 编辑 2:
一个例子可能有助于更好地阐明情况。
SomeClass.cs
namespace SomeNamespace {
public static class SomeClass {
public static string SomeExtensionMethod(this string s){
// some implementation
}
/*
More extension methods
*/
}
}
Consumer.cs
using SomeNamespace.SomeClass
namespace OtherNamespace {
public class Consumer {
public void Consume(){
string id = "someid";
string after = id.SomeExtensionMethod;
}
/*
More extension methods from SomeClass used
*/
}
}
问题是,当我发现某些 Consumer
具有 using SomeNamespace.SomeClass
时,检查底层方法使用位置的最佳方法是什么?
有没有类似于Find Usages的命令可以获取Consumer
下SomeNamespace.SomeClass
的所有方法class?
通常只检查您的使用情况。 Visual Studio 只允许来自一个命名空间的 method/class 调用。如果您正在使用的多个命名空间中还有另外两个同名方法,Visual Studio 将强制您在调用中指定命名空间说明。
即
using Name1;
using Name2;
namespace Class1 {
class Testing {
public Testing {
// this method only exists in Name1
Method1 ( );
// this method exist in both Name1 and Name2
Name1.Method2 ( );
Name2.Method2 ( );
}
}
}
所以如果你只看到
using SomeNamespace;
您会知道任何可能来自该命名空间的 classes 都特别来自 SomeNamespace。 如果有另一个 class 同名但也在不同的命名空间中,Visual Studio 将强制您在调用时输入该命名空间。
所以如果你看到你的使用是正常的,没有随机的
RandomNamespace.Class1 class1 = new RandomNamespace.Class1 ( );
你肯定知道没有什么是异常的。
您想知道是否需要导入导入的命名空间,因为使用了该命名空间中的类型?如果它在插件 "Productivity power tools" 中查看,例如有一个选项可以在保存时删除和排序使用