我需要获得几个对象的名称.名称不能包含它们的位(16/32/64).我也是这样做的object.GetType().Name.当我使用int作为object(int.GetType().Name)时,它返回int.但是当我使用uint时它会返回uint32.我想只得到uint.有没有比String.Replace更好的方法呢?
您可以使用编译器服务来执行此操作:
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
}
Run Code Online (Sandbox Code Playgroud)