public static WellKnownType?TryGetWellKnownType(this ITypeSymbol symbol) { return(symbol.SpecialType switch { SpecialType.System_String => WellKnownType.System_String, SpecialType.System_Nullable_T => WellKnownType.System_Nullable_T, SpecialType.System_Array => WellKnownType.System_Array, SpecialType.System_Object => WellKnownType.System_Object, _ => WellKnownTypeExtensions.GetWellKnownType(symbol.ContainingNamespace?.GetDisplayName() ?? "", symbol.MetadataName) });
public static WellKnownType?TryGetWellKnownType(this TypeReference tr) { return(tr.MetadataType switch { MetadataType.String => WellKnownType.System_String, MetadataType.Object => WellKnownType.System_Object, MetadataType.Void => WellKnownType.System_Void, // TypeReferences of System.Array do not have a MetadataType of MetadataType.Array -- use string checking instead MetadataType.Array or _ => WellKnownTypeExtensions.GetWellKnownType(tr.Namespace, tr.Name) });