Търся да получа предшественик от семантичния модел на 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()
, мога да взема информация от syntaxTree. - person PasTeK   schedule 14.05.2014