【问题标题】:Can't retrieve type information via Roslyn无法通过 Roslyn 检索类型信息
【发布时间】:2017-06-02 07:17:29
【问题描述】:

我正在尝试检索 Roslyn 中的类语法节点的类型,因此我可以通过遵循 @slaks 的答案来获取封闭的命名空间:Roslyn : How to get the Namespace of a DeclarationSyntax with Roslyn C#

我有以下几点:

static async Task MainAsync(string[] args)
{
    string projectPath = @"C:\Projects\ertp\Ertp.Mobile.csproj";
    var msWorkspace = MSBuildWorkspace.Create();

    var project = msWorkspace.OpenProjectAsync(projectPath).Result;

    foreach (var document in project.Documents)
    {
        Console.WriteLine(project.Name + "\t\t\t" + document.Name);
        SemanticModel model = await document.GetSemanticModelAsync();
        var classes = document.GetSyntaxRootAsync().Result.DescendantNodes().OfType<ClassDeclarationSyntax>();
        foreach (var klass in classes)
        {
            var info = model.GetTypeInfo(klass);
            var isNull = info.Type == null; //TRUE
        }
    }

如果我无法获得我无法获得命名空间的类型 - 知道如何检索我需要的详细信息吗?

【问题讨论】:

    标签: c# roslyn


    【解决方案1】:

    对于减速器,您需要调用 model.GetDeclaredSymbol(node),然后对于命名空间,ContainingNamespace

    model.GetTypeInfo(node).Type 适用于表达式节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 2016-03-18
      • 2018-06-05
      • 2013-05-22
      相关资源
      最近更新 更多