Rolsyn Не могу получить baseType - PullRequest
0 голосов
/ 12 ноября 2018

Если вы расширяете созданный класс, вы не можете получить описание базового класса. Если прямое расширение контроллера, вы можете получить описание базового класса. Рослин Версия 2.9.0. Я обновил Roslyn Version с 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;
            }
        }
...