c# - Rolsyn 无法获取 baseType
问题描述
如果扩展自己创建的类,则无法获取基类描述。如果直接扩展Controller,可以得到基类描述。罗斯林版本 2.9.0。我将 Roslyn 版本从 1.1.0 升级到 2.9.0。
namespace BrnMall.Web.MallAdmin.Controllers
{
class ModelOptionalRequiredPropertiesAnalyzer_R1 : BaseTest
{
[HttpPost]
public void Ac() {
}
}
}
namespace BrnMall.Web.MallAdmin.Controllers
{
class BaseTest : Controller
{
}
}
var methodSymbol = semanticModel.GetDeclaredSymbol(methodDeclarationSyntax) as IMethodSymbol;
if (methodSymbol == null)
continue;
//Cannot get to base class
IEnumerable<ITypeSymbol> iTypes = methodSymbol.ContainingType.GetAllTypes();
public static IEnumerable<ITypeSymbol> GetAllTypes(this ITypeSymbol typeSymbol)
{
while (typeSymbol.BaseType != null)
{
yield return typeSymbol;
typeSymbol = typeSymbol.BaseType;
}
}
解决方案
推荐阅读
- python - 如何在 python 中使用嵌套循环打印以下模式?
- c++ - C++ | 将字符串推入空向量会导致第一个元素被破坏?
- python - 将 Python 的 Keras 用于神经网络时出现类型错误
- python - Python 抓取网站 w/BeautifulSoup4 显示具有类名的表的属性错误
- wordpress - 如何从特定类别中提取最新帖子
- java - 这是用 java 12 编写的,但如果我在 java 15 上运行它,它会引发异常错误
- python - 如何替换 tf.train.batch ,因为它已被弃用
- c++ - 从多个模板类参数中推导可变模板
- vba - 如何在 MS Word vba 中取消选择形状?
- javascript - 为导入添加 .js 扩展名