2016-11-17 64 views
1

EDIT3使用指令参考:问题重写,以供将来参考,这要归功于BahJiy检查在Visual Studio

有一个Visual Studio(或ReSharper的),如“查找用法”命令来查找使用指令类的用法?


查找用法只显示名称空间本身的引用(因此是“唯一用法”,如下图所示)。

Find Usages on using directive returns "This is the only usage"

当我注释掉using System.Reactive.Linq线按下面,Observable表明它不存在于当前上下文存在一个错误。

enter image description here

注释掉using指令,检查错误,如上述,有没有比检查一个错误,一个更好的办法?


答:查找用法确实它,光标位置重要

作为答案的评论如下所述,光标位置必须在using,而不是命名空间。

enter image description here



老问题,身体
是否有一个Visual Studio(或ReSharper的)命令,告诉我哪些方法是从 SomeNamespace.SomeClass未来中使用文件由 using SomeNamespace.SomeClass定义?

我想检查用例,当我遇到一些意外的命名空间。
查找使用指令或所有使用指令中的引用仅显示其他指令。

我可以删除非常using指令,并检查该文件中的错误,但我一定是无知的一个更好的办法...


编辑+ EDIT2
一个例子可以帮助更好地澄清情况。

SomeClass.cs

namespace SomeNamespace { 
    public static class SomeClass { 
     public static string SomeExtensionMethod(this string s){ 
      // some implementation 
     } 
     /* 
      More extension methods 
     */ 
    } 
} 

消费者。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 
     */ 
    } 
} 

的问题是,当我发现一些 Consumerusing SomeNamespace.SomeClass,什么检查其中使用的基本方法的最佳方法是什么?
是否有类似于查找用法的命令来获取 SomeNamespace.SomeClassConsumer类下的所有方法?

+0

所有的视觉工作室都具有该功能,只需将鼠标指向该方法,您就会知道该方法来自哪个类 –

+0

是的,悬停在方法上会告诉我哪个它来自它的类,但不是当悬停在using指令上时的另一种方式。如果我可以检查文件中的哪些方法来自'使用SomeNamespace.SomeClass',这将非常有用。 – Ryota

+0

实际上,你可以..如果它是一个DLL,你可以检查解决方案资源管理器,在参考下,双击它,它会显示该指令 –

回答

0

通常只需检查您的使用。 Visual Studio只允许来自一个名称空间的方法/类调用。如果在您使用的Namespace的多个名称空间中还有另外两个相同名称的方法,Visual Studio将强制您在您的调用中指定Namespace说明。

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; 

你就会知道,可能来自该命名空间中的类从SomeNamespace是特别。 如果存在另一个同名的类,但也在不同的名称空间中,Visual Studio将强制您在调用时键入该名称空间。

所以,如果你看到你usings是正常的,没有随机

RandomNamespace.Class1 class1 = new RandomNamespace.Class1 (); 

你肯定知道,没有什么是不寻常的。

+0

如果问题不明确,我很抱歉。我不是在谈论具有相同名称的多个方法 - 也不是关于任何类或方法的实现。为了让我的问题更具有一定的上下文,我正在设法理解特定类“SomeNamespace.SomeClass”的用例,它恰好出现在我的队友编写的其他代码中。如果班级定义了数十种方法,但需要进行大量的重构工作,则会变得更加麻烦。希望它能更好地阐明我的问题。 – Ryota

+0

我想我有点理解你的问题。我认为这可能有所帮助 – BahJiy

+1

它几乎可以说将光标放在要查找引用的using语句上并使用Find Usage。 http://stackoverflow.com/questions/16405461/how-can-i-find-all-usages-of-a-namespace-and-its-members – BahJiy

0

你想知道是否需要导入的名称空间被导入,因为来自该名称空间的类型被使用?如果它看到插件“生产力动力工具”,例如有一个选项可以删除和排序使用保存

+0

是的,有点。我确实使用生产力电动工具,它一直很高兴与它合作。我所追求的并不完全是它所提供的 - 我知道这些使用是绝对使用的,因此无法删除,但没有快速查看它在使用文件中的使用位置。 – Ryota

相关问题