Roslyn,继承链在GetDeclaredSymbol()中使用程序集引用中断

时间:2017-02-24 09:29:29

标签: c# roslyn roslyn-code-analysis

情景就是这样,

当前项目中的ClassA

AssemblyB中的ClassB

AssemblyC中的ClassC

Class Heirarchy

ClassA:ClassB
{
}

ClassB:ClassC
{
}

分析器代码,

var declaredSymbol = _semanticModel.GetDeclaredSymbol( type);
var baseType = declaredSymbol.BaseType;

while (baseType != null && baseType.Name != "Object")
{
  inheritanceCount++;
  baseType = baseType.BaseType;
}

当type为ClassA时,它可以将ClassB检测为basetype,然后链断开,对于ClassB,它找不到BaseType(应该是ClassC,驻留在Assembly C中)

0 个答案:

没有答案