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

Fre*_*hek 2 c#

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

Zei*_*kki 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
}
Run Code Online (Sandbox Code Playgroud)

  • @ S.Serp对于任何开发人员来说这都是小菜一碟,只需将`T value`作为参数添加到`GetFriendlyTypeName`方法中 (2认同)