와 다른 상속보다 모든 클래스 선언을 찾기 나는 SyntaxTree
의 배열을 포함하는 CSharpCompilation
인스턴스를하고 난 클래스로슬린
예를 들어
// Not in syntax tree but referenced in project
public class Base{}
// In syntax tree, how to find all such classes?
public class MyClass : Base {}
에서 상속하는 모든 클래스 선언을 찾기 위해 노력하고있다
나는 몇 가지 시도를 해봤지만 모든 옵션과 약간 혼란스럽고 올바른 방법을 찾지 못하는 것 같습니다.
나는 기호를 얻기 위해 노력했지만이 상속 유형 로슬린에 아주 새로운
SyntaxTree[] trees = context.CSharpCompilation.SyntaxTrees;
IEnumerable<ISymbol> symbols = context.CSharpCompilation.GetSymbolsWithName(x => x == typeof(Base).Name, SymbolFilter.Type);
작동하지 않습니다와이를 달성하는 방법에 대한 제안이나 포인터에 가장 감사 할 것입니다.
제네릭을 처리하지 마십시오. http://source.roslyn.codeplex.com/#Microsoft.CodeAnalysis.Workspaces/Shared/Extensions/ITypeSymbolExtensions.cs,310 – SLaks
ITypeSymbol 및 INamedTypeSymbol의 확장 기능은 유용하지만 현재는 내부 용입니다. 이 코드에 대한 유스 케이스를 확인 했으므로 다행스럽게도 제네릭에 대해 걱정할 필요가 없습니다. 적어도 기본 용도는 제네릭이 아닙니다. –
당신이 할 수있는 일은 당신의 프로젝트에 그것들을 드러내 비공개로 만드는 것입니다. 올 겨울 내 옛 직업에 어떻게 돌아 왔는지 정확하게 말할 수는 없습니다. 우리는 분석을 위해이 클래스들을 사용합니다. –