簡體   English   中英

Roslyn在{SomeSyntax} .Type下獲取詳細信息

[英]Roslyn getting details under {SomeSyntax}.Type

調試

我有一個通用類:

public class NestedDict<T>: Dictionary<string, Dictionary<string, T> { } 

如圖所示,我可以解析並訪問其BaseList並找出它的TypeArgumentList位於調試器中。 但是,我不能簡單地調用baseType.Type.TypeArgumentList來訪問它,因為它不是我可以訪問的公共成員。

通常,在我的情況下,在Type下訪問TypeArgumentList的正確方法是什么? 或一般的任何類型細節?

雖然您可能知道baseType是泛型類型(So GenericNameSyntax ),但它不是唯一可能的情況,因此BaseList中的對象屬於父類型( TypeSyntax )。

您只需要TypeArgumentList來訪問TypeArgumentList

var tree = CSharpSyntaxTree.ParseText("public class NestedDict<T>: Dictionary<string, Dictionary<string, T> { } ");
var cu = (CompilationUnitSyntax)tree.GetRoot();
var c = (ClassDeclarationSyntax)cu.ChildNodes().Single();

var baseDeclaration = (BaseTypeSyntax)c.BaseList.ChildNodes().Single();
var baseNameSyntax = (GenericNameSyntax)baseDeclaration.Type;
Console.WriteLine(baseNameSyntax.TypeArgumentList.Arguments[0].ToFullString());
Console.WriteLine(baseNameSyntax.TypeArgumentList.Arguments[1].ToFullString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM