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