2010-09-01 1 views
4

У меня есть тип (через отражение, например).Получите C# -специфическое имя для данной структуры System.Type?

У меня есть значение свойства Name, например, String ... это «System.String». Я хочу увидеть «string» («int» вместо «System.Int32» и т. Д. И т. Д.).

Может ли что-нибудь в рамках (или на языке) дать мне это? Могу ли я преобразовать имя типа Framework в имя типа языка (или, наоборот, получить имя типа языка для начала)?

+1

Что более интересно, как вы будете решать эту проблему для оказания универсальных типов. Тип, который C# считает «C .D », представляется строкой CLR как «C'1 + D'1 [System.Int32, System.String]». –

+0

'Nullable ' также может быть сокращением граничного значения до 'T?' –

ответ

8

Вы можете получить соответствующий язык псевдонимы типа с использованием классов CodeDOM

var cs = new CSharpCodeProvider(); 
var vb = new VBCodeProvider(); 

var type = typeof (int); 
Console.WriteLine("Type Name: {0}", type.Name); // Int32 
Console.WriteLine("C# Type Name: {0}", cs.GetTypeOutput(new CodeTypeReference(type))); // int 
Console.WriteLine("VB Type Name: {0}", vb.GetTypeOutput(new CodeTypeReference(type))); // Integer