Я использую 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, или мне нужно использовать другой подход для вывода правильных типов?