我尝试制作分析器,它将从
IB
内的 A
类中检测 BaseType list.Add(typeof(A));
。我有 A
作为 IdentifierNameSyntax
但没有方法获得基础 IB
。或者存在?你能帮我吗?
class Consolidator
{
...
public void Warner()
{
list.Add(typeof(A));
}
...
}
class A : IB
{
...
}
在Roslyn分析器中,您需要使用SemanticModel来绑定typeof内的事物。调用 SemanticModel.GetSymbolInfo(),这将为您提供一个 INamedTypeSymbol。从那里您可以检查基本类型。
我认为您正在寻找的是
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
{
//
}
当我在
.BaseTypes
上检查 INamedTypeSymbol
时,我只得到实际的类型名称,而不是 完全限定 类型名称。所以我无法在呼叫 Type.GetType(string)
时使用
.IsAssignableFrom/To
知道如何获得完整类型名称吗?