2010-08-04 7 views
3

Est-il possible de déterminer le type d'objet alias (es) par réflexion? Étant donné l'exemple suivant où myObject est de type System.Int32 - par exemple Obtenir par programme un alias de type dans .NET

Type t = myObject.GetType(); 

t.Name sera Int32. Cependant, je voudrais identifier l'alias possibile (s), le cas échéant, des objets en question, afin que je puisse résoudre le nom du type de inten plusInt32

Je suis ne cherche pas à passer énormément de temps là-dessus. S'il n'y a pas de solution intégrée extrêmement simple, je vais simplement cartographier les valeurs moi-même. =)

Merci d'avance!

+3

int n'existe pas comme un type de .net à l'exécution – CarneyCode

Répondre

5

Pas directement avec la réflexion, il n'y en a pas. Le "nom de type" (comme vous l'appelez) "int" n'est pas du tout un nom de type, mais un mot-clé de langue.

Vous pouvez, bien sûr, utiliser un dictionnaire pour stocker les recherches des noms de types dans les formulaires de commodité les plus courts. Mais il n'y a rien dans l'API de réflexion qui fera cela pour vous.

+0

Assez bon pour moi. Merci! –

0

Les alias semblent être uniquement à la compilation. Notez comment ils ne s'appliquent pas en dehors d'un fichier source donné. Ce sont simplement des commodités, rien de plus.

5

Vous pouvez obtenir alias type spécifique de langue en utilisant des classes 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 
Questions connexes