2017-01-28 2 views
2

Мне нужно получить имена нескольких объектов. Имена не могут содержать свои биты (16/32/64). Actaully Я делаю это так object.GetType().Name. Когда я использую int как объект (int.GetType().Name), он возвращает int. Но когда я использую uint, он возвращает uint32. Я хочу получить только uint. Есть ли лучший способ сделать это, чем String.Replace?Получить имя объекта без получения его битов типа

+0

Почему именно вы хотите 'unit' вместо' uint32'? Чего вы пытаетесь достичь? – Rob

+1

Хм, нет, вы не получите «int». Попытайтесь приложить минимальные усилия, чтобы опубликовать действующий код. Слова типа 'int' и' uint' являются * ключевыми словами * на языке C#. Переход от имени типа фрейма к ключевому слову, вероятно, лучше всего сделать с помощью оператора switch. Или просто не беспокойтесь, так как это не имеет значения. –

+0

Возможный дубликат [Есть ли способ получить псевдоним типа через отражение?] (Http://stackoverflow.com/a/1363309/2803565) –

ответ

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 
} 
+0

, но кажется, что он хочет получить имя типа из экземпляра объекта (или переменная) –

+2

@ S.Serp Это будет кусок пирога для любого разработчика, просто добавьте значение «T» в качестве параметра в метод «GetFriendlyTypeName» – user3185569

Смежные вопросы