2013-07-09 2 views
1

У меня большая проблема с Roslyn.NET CTP и семантическим анализом моего кода.
Моя задача: получить classdeclaration и его унаследованный тип.
Например:
Класс: Изменить: ChangePassword
Я должен написать в консоли: имя типа «ChangePassword».
Как я могу это сделать? В отражении очень просто: (это общий тип):Семантический анализ Roslyn

foreach (Type t in types) 
     { 
      if (t.BaseType.IsGenericType) 
      { 
       Type[] typeArguments = t.BaseType.GetGenericArguments(); 

       foreach (Type tParam in typeArguments) 
       { 
        typesList.Add(tParam.Name); 
        typesListProperties = tParam.GetProperties(); 

        foreach (var p in typesListProperties) 
         typesListPropertiesList.Add(p.Name);      
       } 

      } 

     } 

Но для меня моя проблема требует использования roslyn. Моя идея - использовать semanticModel.GetTypeInfo или GetSymbolInfo, но ни один из них не принимает параметр SyntaxNode!

Моя декларация класса реальность такова:

public partial class Example : System.Web.Mvc.WebViewPage<ExampleModel> 

для этого примера я должен добавить к List<string> "ExampleModel".

ответ

2

Посмотрите на использование SemanticModel.GetDeclaredSymbol(ClassDeclarationSyntax), чтобы определить Symbol для вашего типа, а затем осмотрите BaseType.

Смежные вопросы