Roslyn语义分析

本文关键字:语义分析 Roslyn | 更新日期: 2023-09-27 18:21:42

我对Roslyn.NET CTP和代码的语义分析有一个大问题
我的任务是:获取类声明和他继承的类型
例如:
类别:更改:更改密码
我必须在控制台中写:"ChangePassword"类型名称
我该怎么做?在反射中很简单:(这是一种通用类型):

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);                     
                }
            }
        }

但我的问题需要使用罗斯林。我的想法是使用semanticModel.GetTypeInfo或GetSymbolInfo,但它们都不接受参数SyntaxNode!

我的现实课堂宣言是:

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

对于这个例子,我必须添加到List<string>"ExampleModel"中。

Roslyn语义分析

查看使用SemanticModel.GetDeclaredSymbol(ClassDeclarationSyntax)来确定类型的Symbol,然后检查BaseType属性。