获取对象的名称而不获取其位类型

时间:2017-01-28 13:59:35

标签: c#

我需要获取几个对象的名称。名称不能包含它们的位(16/32/64)。我是这样做的object.GetType().Name。当我使用int作为对象(int.GetType().Name)时,它返回int。但是当我使用uint时它会返回uint32。我想只得到uint。有没有比String.Replace更好的方法呢?

1 个答案:

答案 0 :(得分:6)

您可以使用编译器服务来执行此操作:

static string GetFriendlyTypeName<T>()
{
    var csharpCodeProvider = new Microsoft.CSharp.CSharpCodeProvider();
    var codeType = new System.CodeDom.CodeTypeReference(typeof(T));
    return csharpCodeProvider.GetTypeOutput(codeType);
}

static void Main(string[] args)
{
    Console.WriteLine(GetFriendlyTypeName<Int32>()); //int
    Console.WriteLine(GetFriendlyTypeName<UInt32>()); //uint
}