Roslyn : Как получить NamespaceDeclarationSyntax в Roslyn C#?
У меня есть метод который парсит код C#.
На вход этого метода подается код в виде строки. После чего с помощью синтаксического дерева я хочу получить список namespace
.
Проблема заключается в том, что если namespace
объявлен так namespace MyNamespace;
, то _root.Members.OfType<NamespaceDeclarationSyntax>()
будет равен null
.
Однако, если объявить namespace
, как namespace MyNamespace { }
, то всё будет номально.
Помогите, пожалуйста, найти решение данной проблемы?
Код всего метода
public FileModel ParseEntitiesFromFile(string code)
{
var fileModel = new FileModel()
{
Name = nameFile
};
var syntaxTree = CSharpSyntaxTree.ParseText(code);
var _root = syntaxTree.GetCompilationUnitRoot();
fileModel.CodeEtities.Namespaces.AddRange(GetListNamespacesModel(_root.Members.OfType<NamespaceDeclarationSyntax>()));
return fileModel;
}
Пример кода, который подается в метод
namespace MyNamespace;
public class MyClass {
}
Ответы (1 шт):
Автор решения: Кирилл Серебренников
→ Ссылка
из комментария EvgeniyZ, понял, что нужно использовать BaseNamespaceDeclarationSyntax