2009-11-23 5 views
1

Soit la chaine "string[]" et a demandé à obtenir le type sous-jacent de cette classe, on pourrait commencer par:Comment obtenir le type de tableau .NET à partir de la chaîne "string []"?

private Type getTypeByName(string typeName) 
{ 
    if (typeName.EndsWith("[]")) 
    { 
      return something; // But what? 
    } 

    return Type.GetType(typeName); 
} 

Quel type est « string [] » et comment on ne réfléchit le type hors de lui?

De toute évidence, il y a un type System.String et un type System.Array, mais je ne vois pas comment ils peuvent se refléter « ensemble » comme vous le feriez normalement pour Nullable<T> et son T avec la méthode MakeGenericType.

Toute aide pour briser la boucle d'esprit dans laquelle je me suis embarqué sera grandement appréciée!

Répondre

8

Quel est exactement votre problème? Type.GetType fonctionne très bien:

Console.WriteLine(typeof(string[])); 
var type = Type.GetType("System.String[]"); 
Console.WriteLine(type); 

Prints:

System.String[] 
System.String[] 

si clairement cela fonctionne comme prévu. Type.GetType ("System.String []") renverra le type de tableau de chaînes.

+0

Ah, eh bien c'est assez juste. Mais que se passe-t-il si on vous donne "string []" comme entrée au lieu de "System.String []"? – tags2k

+2

@tags: bien, 'string' est un mot-clé C#, ce n'est pas un type CLR/CTS donc vous ne pouvez pas vraiment vous attendre à ce que le CLR le sache. Si vous devez absolument l'utiliser, placez tous les mappages de type de mot-clé C# dans un dictionnaire et utilisez le dictionnaire pour remplacer ces types dans vos chaînes d'entrée. –

+0

Je vois, mais je pense que je vais transmettre le mot-clé dictionnaire! Merci de votre aide. – tags2k

0

Pas besoin de vérifier [] dans votre chaîne d'entrée.

Vous pouvez vérifier ceci en vérifiant le prop de Type.IsArray.

1

utilisation GetElementType() du type:

string[] eee = new string[1]; 
Type ttt = eee.GetType().GetElementType(); 

ttt est du type String.

0

Le type est System.String []

Questions connexes