如何从 IdentifierNameSyntax 获取 BaseType

How get BaseType from IdentifierNameSyntax

我尝试制作分析器,它将从 list.Add(typeof(A)); 中的 class A 中检测 BaseType IB。我有 A 作为 IdentifierNameSyntax 但没有获取基数 IB 的方法。还是存在?你能帮帮我吗?

class Consolidator
{
...
    public void Warner()
    {
        list.Add(typeof(A));
    }
...
}

class A : IB
{
...
}

我认为您要查找的是 Type.BaseType 属性。有关详细信息,请查看 MSDN 文档:Type.BaseType

using System;
                    
public class Program
{
    public static void Main()
    {
        var variable = new A();
        Console.WriteLine(variable.GetType().BaseType);
    }
}
class IB
{
//
}

class A : IB
{
//
}

在 Roslyn 分析器中,您需要使用 SemanticModel 来绑定 typeof 中的内容。调用 SemanticModel.GetSymbolInfo(),这将为您提供一个 INamedTypeSymbol。从那里您可以检查基本类型。