Я хочу получить предка из семантической модели roslyn модуля.
В таком классе:
namespace Name1.Name2
{
using System;
...
public partial class MyClass : Ancestor<Param1, Param2>
{
}
}
Итак, я пытаюсь получить Ancestor<Param1, Param2>
(а позже Param1
и Param2
).
Я использую этот код для создания семантической модели:
SyntaxTree tree = CSharpSyntaxTree.ParseFile(moduleAutoGenPath);
CompilationUnitSyntax root = (CompilationUnitSyntax)tree.GetRoot();
var nameSpace = ((NamespaceDeclarationSyntax)(root.Members[0])).Name.ToString();
var compilation = CSharpCompilation.Create(nameSpace, new[] { tree }).AddReferences(new MetadataFileReference(typeof(object).Assembly.Location));
Я ищу compilation.Assembly.Modules
, но не нахожу предка..
Я на правильном пути? или совсем потерялся?
someNode.Ancestors().OfType<ClassDeclarationSyntax>().FirstOrDefault().BaseList.Types
который, как я предполагаю, вы можете просто развернуть, если смотрите другое направление. - person Jeroen Vannevel   schedule 14.05.2014root.DescendantNodes().OfType<ClassDeclarationSyntax>().FirstOrDefault()
, я смогу получить информацию из синтаксического дерева. - person PasTeK   schedule 14.05.2014