无法通过 Roslyn 检索类型信息
Can't retrieve type information via Roslyn
我正在尝试检索 Roslyn 中 class 语法节点的类型,这样我就可以通过跟随@slaks 的回答来获取封闭的命名空间:
我有以下内容:
static async Task MainAsync(string[] args)
{
string projectPath = @"C:\Projects\ertp\Ertp.Mobile.csproj";
var msWorkspace = MSBuildWorkspace.Create();
var project = msWorkspace.OpenProjectAsync(projectPath).Result;
foreach (var document in project.Documents)
{
Console.WriteLine(project.Name + "\t\t\t" + document.Name);
SemanticModel model = await document.GetSemanticModelAsync();
var classes = document.GetSyntaxRootAsync().Result.DescendantNodes().OfType<ClassDeclarationSyntax>();
foreach (var klass in classes)
{
var info = model.GetTypeInfo(klass);
var isNull = info.Type == null; //TRUE
}
}
如果我无法获取类型,我就无法获取命名空间 - 知道如何检索我需要的详细信息吗?
对于减速器,您需要调用 model.GetDeclaredSymbol(node)
,然后对于命名空间,ContainingNamespace
。
model.GetTypeInfo(node).Type
将适用于表达式节点。
我正在尝试检索 Roslyn 中 class 语法节点的类型,这样我就可以通过跟随@slaks 的回答来获取封闭的命名空间:
我有以下内容:
static async Task MainAsync(string[] args)
{
string projectPath = @"C:\Projects\ertp\Ertp.Mobile.csproj";
var msWorkspace = MSBuildWorkspace.Create();
var project = msWorkspace.OpenProjectAsync(projectPath).Result;
foreach (var document in project.Documents)
{
Console.WriteLine(project.Name + "\t\t\t" + document.Name);
SemanticModel model = await document.GetSemanticModelAsync();
var classes = document.GetSyntaxRootAsync().Result.DescendantNodes().OfType<ClassDeclarationSyntax>();
foreach (var klass in classes)
{
var info = model.GetTypeInfo(klass);
var isNull = info.Type == null; //TRUE
}
}
如果我无法获取类型,我就无法获取命名空间 - 知道如何检索我需要的详细信息吗?
对于减速器,您需要调用 model.GetDeclaredSymbol(node)
,然后对于命名空间,ContainingNamespace
。
model.GetTypeInfo(node).Type
将适用于表达式节点。