File: Tooltip\TypeNameStringResolver.cs
Web Access
Project: src\src\Razor\src\Razor\src\Microsoft.CodeAnalysis.Razor.Workspaces\Microsoft.CodeAnalysis.Razor.Workspaces.csproj (Microsoft.CodeAnalysis.Razor.Workspaces)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
 
namespace Microsoft.CodeAnalysis.Razor.Tooltip;
 
internal static class TypeNameStringResolver
{
    private static readonly Dictionary<string, string> s_primitiveDisplayTypeNameLookups = new(StringComparer.Ordinal)
    {
        // These null suppressions are required for the VMR, which builds using v5.0 of Roslyn
        [typeof(byte).FullName!] = "byte",
        [typeof(sbyte).FullName!] = "sbyte",
        [typeof(int).FullName!] = "int",
        [typeof(uint).FullName!] = "uint",
        [typeof(short).FullName!] = "short",
        [typeof(ushort).FullName!] = "ushort",
        [typeof(long).FullName!] = "long",
        [typeof(ulong).FullName!] = "ulong",
        [typeof(float).FullName!] = "float",
        [typeof(double).FullName!] = "double",
        [typeof(char).FullName!] = "char",
        [typeof(bool).FullName!] = "bool",
        [typeof(object).FullName!] = "object",
        [typeof(string).FullName!] = "string",
        [typeof(decimal).FullName!] = "decimal",
    };
 
    public static bool TryGetSimpleName(string typeName, [NotNullWhen(returnValue: true)] out string? resolvedName)
    {
        if (typeName is null)
        {
            throw new ArgumentNullException(nameof(typeName));
        }
 
        if (s_primitiveDisplayTypeNameLookups.TryGetValue(typeName, out var simpleName))
        {
            resolvedName = simpleName;
            return true;
        }
 
        resolvedName = null;
        return false;
    }
}