首页 > 解决方案 > 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;
            }
        }

标签: c#roslyn

解决方案


推荐阅读