Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Roslyn正在{SomeSyntax}.Type下获取详细信息_C#_Roslyn - Fatal编程技术网

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用于澄清:)