Получить вложенный класс из Roslyn CompilationUnitSyntax - PullRequest
0 голосов
/ 12 июня 2018

Я использую Roslyn для синтаксического анализа файлов C #, чтобы сгенерировать типизацию TypeScript.

var source = System.IO.File.ReadAllText(pathToCSharpFile);
var tree = CSharpSyntaxTree.ParseText(source);
var root = (CompilationUnitSyntax) tree.GetRoot();

Я рекурсивно брожу по дереву от корня, чтобы получить информацию о свойствах, полях и вложенных классах.

namespace MyNamespace
{
    public class Foo
    {
        public Bar BarProp { get; set; }

        public Baz BazProp { get; set; }

        public class Bar
        {
        }
    }
}

Определение TypeScript для этого должно стать:

interface Foo {
    barProp: Foo.Bar;
    bazProp: Baz;
}

namespace Foo {
    interface Bar {
    }
}

Что ускользает от меня, это то, как определить, что тип BarProp является вложенным классом, чтобы указать тип дляbarProp правильно в определении TypeScript.

Доступна ли эта информация при использовании PropertyDeclarationSyntax, FieldDeclarationSyntax и ClassDeclarationSyntax, или мне нужно использовать другой подход для вывода правильных типов?

...