Как сравнить Microsoft.CodeAnalysis.ITypeSymbol с System.Type

Я успешно получил ITypeSymbol от SyntaxNode, используя:

SemanticModel.GetTypeInfo(sytaxNode).ConvertedType

Теперь я хотел бы знать, если этоITypeSymbol соответствуетSystem.Type экземпляр, который присутствует в моем исполняемом коде, какtypeof(IEnumerable<int>) или жеsomeObject.GetType().

Я старался

typeInfo.ConvertedType.ToString() == type.ToString()

Но они не используют одни и те же правила форматирования, например, для дженериков, таких какIEnumerable<int>

TypeInfo.ToString() == "System.Collections.Generic.IEnumerable<int>"

в то время как

typeof(IEnumerable<int>).ToString() == "System.Collections.Generic.IEnumerable`1[System.Int32]"

Более того, я думаю, что было бы лучше сравнивать AssemblyQualifiedNames вместо только Пространства имен и имени типа, чтобы избежать возможных конфликтов имен.

В идеале я хотел бы иметь возможность получить фактический экземпляр System.Type в моем исполняемом коде, который соответствует ITypeInfo, полученному из семантической модели (при условии, что требуемая сборка загружена и / или доступна). Это позволило бы проверить, присваивается ли тип другому типу и т. Д.

Ответы на вопрос(2)

Ваш ответ на вопрос