Как можно получить полное имя типа, содержащегося в объекте 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
и получить TypeInfo
от каждого объекта TypeSyntax
.