Программно получить псевдоним типа в .NET - PullRequest
3 голосов
/ 05 августа 2010

Можно ли с помощью отражения определить псевдоним (ы) типа объекта ? В следующем примере, где myObject имеет тип System.Int32 - например,

Type t = myObject.GetType();

t.Name будет Int32 . Однако я хотел бы определить возможные псевдонимы, если таковые имеются, рассматриваемых объектов, чтобы я мог разрешить имя типа int в дополнение к Int32

Я не собираюсь тратить на это огромное количество времени. Если не существует чрезвычайно простого встроенного решения, я просто сопоставлю значения самостоятельно. =)

Ответы [ 3 ]

5 голосов
/ 05 августа 2010

Вы можете получить псевдоним определенного языка, используя классы 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
5 голосов
/ 05 августа 2010

Не напрямую с отражением, нет. «Имя типа» (как вы его называете) «int» - это вообще не имя типа, а ключевое слово языка.

Конечно, вы можете использовать словарь для хранения поиска от имен типов к более коротким удобным формам. Но в API рефлексии нет ничего, что могло бы сделать это за вас.

0 голосов
/ 05 августа 2010

Псевдонимы отображаются только во время компиляции. Обратите внимание, что они не применяются за пределами данного исходного файла. Это просто удобства, не более того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...