How to compare a Microsoft.CodeAnalysis.ITypeSymbol to a System.Type

后端 未结 2 1975
野的像风
野的像风 2021-02-10 04:55

I have successfully received an ITypeSymbol from a SyntaxNode by using:

SemanticModel.GetTypeInfo(sytaxNode).ConvertedType

Now I would like to

2条回答
  •  北恋
    北恋 (楼主)
    2021-02-10 05:10

    You can get the INamedTypeSymbol for a type name with Compilation.GetTypeByMetadataName().

    So try this:

    semanticModel.GetTypeInfo(sytaxNode).ConvertedType.Equals(
      semanticModel.Compilation.GetTypeByMetadataName(typeof(WhateverType).FullName))
    

    This won't work with closed generic types, for those you'll need to do a bit more. For example:

    var ienumerableType = semanticModel.Compilation.GetTypeByMetadataName("System.Collections.Generic.IEnumerable`1");
    var intType = semanticModel.Compilation.GetTypeByMetadataName("System.Int32");
    var type = ienumerableType.Construct(intType);
    

提交回复
热议问题