en C #, je dois être capable de créer une gamme d'objets de type au moment de l'exécution en fonction d'une liste délimitée de virgule de types de données transmis à une fonction de chaîne. Fondamentalement, voici ce que j'essaie d'accomplir: mais j'ai besoin de pouvoir appeler ma fonction comme ceci: p> et devez-le générer le tableau de manière dynamique sur la base de la chaîne passée. Voici ma première tentative: p> Ce code crée simplement un tableau d'objets NULLS de type System.Type. Je suis à peu près sûr que le problème réside ici: p> suggestions sur la raison pour laquelle cette syntaxe ne fait pas l'affaire? P> P>
5 Réponses :
passe dans "chaîne" est juste sténographique pour system.string. system.string code>,
system.int32 code> au lieu de
chaîne code> et
int code>. p>. P>.
type.getType code> n'acceptera pas la notation sténographie pour les types. P>
Utilisez le nom complet de chaque type, y compris l'espace de noms. Comme:
Le problème est qu'il n'y a pas de uint uint code> et
chaîne code> types dans .NET. Ce sont des alias de type C # à la System.Uint32 et System.string Types. Vous devez donc appeler votre fonction comme ceci:
MyFunction("System.UInt32, System.String, System.String, System.UInt32");
Cela ne fonctionne pas car uint code>,
string code>, etc. ne sont pas les noms officiels des types .NET. Ce sont des alias c # pour
system.uint32 code>,
system.string code>, etc., vous devez utiliser les noms de type .NET si vous souhaitez créer des types de manière dynamique comme celle-ci. . P>
Je sais que c'est vieux, mais c'est comme ça que je le craignais:
Vous trouverez peut-être cet article C # -Aliases utile pour un
Switch code> instruction ou similaire. MSDN.MICROSOFT.COM/EN-US/LIBRARY/ya5Y69DS.aspx
En plus du nom de nom de l'Assemblée, envisagez d'utiliser la version surchargée de
type.getType code> qui ignore le cas.