从Roslyn CompilationUnitSyntax获取嵌套类

时间:2018-06-12 07:10:03

标签: c# typescript code-generation roslyn

我使用Roslyn来解析som 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的类型是嵌套类,以便在TypeScript定义中正确指定barProp的类型。

使用PropertyDeclarationSyntax,FieldDeclarationSyntax和ClassDeclarationSyntax时是否可以获得此信息,还是需要使用其他方法来推断正确的类型?

0 个答案:

没有答案