【发布时间】:2017-03-28 22:49:25
【问题描述】:
是否有可能获得包含在 TypeInfo 对象中的类型的完全限定名称?
在调试器中,许多这些值很好地显示为System.Int32,但是当它被打印出来时,没有一个包含这个完全限定的名称。我需要将此作为参数提供给Type.GetType()。
var typeInfo = semanticModel.GetTypeInfo(argument);
var w = typeInfo.ToString(); // Microsoft.CodeAnalysis.TypeInfo
var y = typeInfo.Type.ToString(); // int
var z = typeInfo.Type.ToDisplayString(); // int
var a = typeInfo.Type.OriginalDefinition.ToDisplayString(); // int
var b = typeInfo.Type.OriginalDefinition.ToString(); // int
var c = typeInfo.Type.Name; // Int32
var d = typeInfo.Type.MetadataName; // Int32
var e = typeInfo.Type.ToDisplayParts(); // {int}
var f = typeInfo.Type.ContainingNamespace; // System
请注意,这应该适用于每种类型,所以我不能只是将命名空间与名称连接起来。
或者:是否有另一种(更合适的?)方法来获得确切的类型?
对于上下文:我想检查一个类的类型参数是否包含一些特定的方法。因此,我的方法是从TypeArgumentListSyntax 获取参数并从每个TypeSyntax 对象获取TypeInfo。
【问题讨论】: