2013-07-09 67 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財產。