C# Roslyn正在{SomeSyntax}.Type下获取详细信息
我有一个通用类:C# Roslyn正在{SomeSyntax}.Type下获取详细信息,c#,roslyn,C#,Roslyn,我有一个通用类: public class NestedDict<T>: Dictionary<string, Dictionary<string, T> { } public-class-NestedDict:Dictionary虽然您可能知道baseType是泛型类型(因此是GenericNameSyntax),但它不是唯一可能的情况,因此BaseList中的对象是父类型(TypeSyntax) 您只需强制转换即可访问TypeArgumentList: va
public class NestedDict<T>: Dictionary<string, Dictionary<string, T> { }
public-class-NestedDict:Dictionary虽然您可能知道baseType
是泛型类型(因此是GenericNameSyntax
),但它不是唯一可能的情况,因此BaseList
中的对象是父类型(TypeSyntax
)
您只需强制转换即可访问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());
var tree=CSharpSyntaxTree.ParseText(“公共类NestedDict:DictionaryThanks用于澄清:)