[visual-studio] Visual Studio : 기본 클래스에서 상속 된 모든 클래스를 표시하려면 어떻게합니까?

Visual Studio에서 기본 클래스에서 상속 된 모든 클래스를 표시하려면 어떻게합니까?

예를 들어 ASP.NET MVC에는 몇 가지 ‘ ActionResult ‘형식이 있으며 모두 기본 클래스에서 상속 / 구현합니다 ActionResult.

당신은 그냥 ‘알고’하지 않는 것 같습니다 ViewJson유효 ActionResult유형, 당신은이 정보를 쉽게 찾을 수있는 방법은 없습니다.

나를 잘못 증명해주세요.

객체 브라우저에 이것을 쉽게 찾을 수있는 것이 있습니까?

다양한 클래스에 대한이 정보를 발견하기 위해 Visual Studio 외부의 도구를 제안하기까지합니다. 예를 들어 : Resharper에 도움이 될만한 것이 있습니까?



답변

물론, Resharper 는 이것을 할 수 있습니다. 그리고 훨씬 더.

아무 곳에서나 유형 이름을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 “상속자로 이동”을 선택하십시오. 오버라이드를 탐색하는 메소드 및 인터페이스 메소드의 구현에도 “Go To Inheritor”를 적용 할 수 있습니다. 인터페이스의 경우 모든 확장 및 구현을 찾을 수있는 위치에서 마우스 오른쪽 버튼을 클릭하여 “고급 고급 찾기”를 다시 호출 할 수 있습니다. 유형-파생 유형의 경우 그리고 내가 가장 좋아하는 기능은 선언으로 이동하기 위해 모든 유형 / 방법에서 Control을 누른 상태에서 클릭하십시오.

.net 개발자에게는 필수 도구라고 생각합니다.


Resharper 9.2에서 소스 코드의 모든 유형에 대해 “사용 고급 찾기”를 마우스 오른쪽 단추로 클릭하고 찾기 = “파생”및 범위 = “솔루션 및 라이브러리”를 선택하십시오.
예를 들어, 공급 업체의 포함 된 DLL에 포함 된 일부 기본 클래스의 모든 상속자 (라이브러리와 코드 모두)를 찾으려면 해당 기본 클래스를 사용하여 코드에 변수를 선언하십시오. 그런 다음 방금 입력 한 기본 클래스 이름을 마우스 오른쪽 단추로 클릭하십시오.


답변

VS2012의 경우

  1. 솔루션 탐색기에서 파일로 이동
  2. 수업 확장 및 선택
  3. 파일 항목이 아닌 클래스 항목을 마우스 오른쪽 단추로 클릭-파생 유형

답변

이를 위해 반드시 Reflector가 필요하지는 않습니다. Visual Studio의 “클래스 다이어그램”뷰를 사용하면 특정 클래스에 대한 모든 파생 클래스를 쉽게 찾을 수 있습니다. “클래스 뷰”에서 클래스를 마우스 오른쪽 버튼으로 클릭하고 “클래스 다이어그램보기”를 선택하십시오. 다이어그램에 계층에 대한 세부 수준이 표시되지 않으면 다이어그램에서 클래스 상자를 마우스 오른쪽 단추로 클릭하고 “파생 클래스 표시”를 선택하십시오.

Resharper만큼 직접적이지는 않지만 R #이없는 경우 옵션입니다.

불행히도, Visual Studio의 특정 버전이 있는지 확실하지 않습니다.


답변

이것은 가장 게으른 답변입니다 (이 답변을 자랑스럽게 생각합니다 🙂

나는 ReSharper를 가지고 있지 않고 전에 시도했지만 그것을 사고 싶지 않았습니다. 클래스 다이어그램을 시도했지만 계층 구조 다이어그램이 전 세계에 3 번 확장되고 랩톱 화면의 너비가 무한하기 때문에 실용적이지 않습니다. 따라서 자연스럽고 쉬운 솔루션은 다음과 같이 일부 Windows Forms 코드를 작성하여 어셈블리의 유형을 반복하고 리플렉션을 사용하여 트리 뷰에 노드를 추가하는 것입니다.

텍스트 상자, 트리 뷰 및이 코드가 실행되는 양식에 필요한 기타 사항이 있다고 가정하십시오.

//Go through all the types and either add them to a tree node, or add a tree
//node or more to them depending whether the type is a base or derived class.
//If neither base or derived, just add them to the dictionary so that they be
//checked in the next iterations for being a parent a child or just remain a
//root level node.

var types = typeof(TYPEOFASSEMBLY).Assembly.GetExportedTypes().ToList();
Dictionary<Type, TreeNode> typeTreeDictionary = new Dictionary<Type, TreeNode>();
foreach (var t in types)
{
    var tTreeNode = FromType(t);
    typeTreeDictionary.Add(t, tTreeNode);

    //either a parent or a child, never in between
    bool foundPlaceAsParent = false;
    bool foundPlaceAsChild = false;
    foreach (var d in typeTreeDictionary.Keys)
    {
        if (d.BaseType.Equals(t))
        {
            //t is parent to d
            foundPlaceAsParent = true;
            tTreeNode.Nodes.Add(typeTreeDictionary[d]);
            //typeTreeDictionary.Remove(d);
        }
        else if (t.BaseType.Equals(d))
        {
            //t is child to d
            foundPlaceAsChild = true;
            typeTreeDictionary[d].Nodes.Add(tTreeNode);
        }
    }

    if (!foundPlaceAsParent && !foundPlaceAsChild)
    {
        //classHierarchyTreeView.Nodes.Add(tn);
    }
}

foreach (var t in typeTreeDictionary.Keys)
{
    if (typeTreeDictionary[t].Level == 0)
    {
        classHierarchyTreeView.Nodes.Add(typeTreeDictionary[t]);
    }
}

StringBuilder sb = new StringBuilder();
foreach (TreeNode t in classHierarchyTreeView.Nodes)
{
    sb.Append(GetStringRepresentation(t, 0));
}
textBox2.Text = sb.ToString();


답변

‘Visual Studio 2015 업데이트 1’부터 시작하면 클래스 코드 편집기에서 클래스 이름을 마우스 오른쪽 단추로 클릭 한 다음 컨텍스트 메뉴에서 ‘구현으로 이동’을 선택할 수 있습니다. 바로 가기는 Ctrl + F12입니다.

자세한 내용은 https://blogs.msdn.microsoft.com/dotnet/2015/11/30/whats-new-in-visual-studio-update-1-for-net-managed-languages/ 를 참조하십시오.


답변

아직 아무도 언급하지 않았으므로 추가하겠습니다.
Jetbrains dotPeek 는 무료 .NET 디 컴파일러로이 정보를 쉽게 표시 할 수 있습니다.

무료 다운로드 : http://www.jetbrains.com/decompiler/

Jetbrains는 Resharper를 만드는 회사입니다.

파생 클래스를 찾는 단계 :

  1. dotPeek 시작
  2. ‘GAC에서 열기 …’를 선택하고 System.Web.MVC 어셈블리를 추가하십시오.
  3. ‘탐색 / 유형으로 이동’을 선택하고 ActionResult
  4. ActionResult클래스 선언, 마우스 오른쪽 버튼으로 클릭하고 ‘파생 상징’을 선택
  5. 짜잔! 파생 된 모든 단일 클래스가 표시됩니다 (아직 몰랐던 소수도 있습니다).

답변

Resharper가 설치 되었다고 가정하면 : 클래스 / 인터페이스에 커서를두고 마우스 오른쪽 단추를 클릭하십시오.-검사-계층

서브 클래스, 구현 및 수퍼 클래스가 표시됩니다.