79 votes

Comment puis-je le Type générique de la représentation de chaîne

J’ai `` .

Et puis j’ai cette``
Comment puis-je obtenir Type de la chaîne s ?

One way (laid) consiste à analyser le «  » et faites :

Mais y a-t-il un moyen plus propre pour obtenir le type final sans aucune analyse etc.. ? Merci.

94voto

Neil Williams Points 6446

Le format de médicaments génériques, est le nom, un caractère, le nombre de paramètres de type, suivi par une liste séparée par des virgules des types entre parenthèses:

Type.GetType("System.Collections.Generic.IEnumerable`1[System.String]");

Je ne suis pas sûr qu'il y a un moyen facile de convertir à partir de la syntaxe C# pour les génériques du type de chaîne de la CLR veut. J'ai commencé la rédaction d'un rapide regex pour l'analyser comme vous l'avez mentionné dans la question, mais s'est rendu compte qu'à moins de vous donner la possibilité d'avoir imbriqués les génériques que les paramètres de type de l'analyse sera très compliqué.

38voto

marc_s Points 321990

Découvrez Activator.CreateInstance - vous pouvez l'appeler avec un type

Activator.CreateInstance(typeof(MyType))

ou avec un assemblage et le nom du type qu' string

Activator.CreateInstance("myAssembly", "myType")

Cela vous donnera une instance du type dont vous avez besoin.

Si vous avez besoin de l' Type plutôt que de l'instance, l'utilisation de l' Type.GetType() méthode et que le nom complet du type qui vous intéresse, par exemple:

string s = "System.Text.StringBuilder";
Type myClassType = Type.GetType(s);

Cela vous donnera l' Type en question.

26voto

Phillippe Santana Points 504

J’ai besoin de quelque chose comme ça et j’ai fini par écrire du code pour analyser les noms de type simple, que j’avais besoin. Naturellement il y a place à amélioration, car il n’identifiera pas les noms de type générique comme , mais il le fait très bien pour , , et autres. Partage dans le cas où cette aide n’importe qui.

Utilisation est aussi simple que d’écrire ceci :

3voto

Turnor Points 1376

Pour simplement obtenir l’objet type de la chaîne, utilisez :

Vous pouvez ensuite transmettre cela à `` :

0voto

Jeff Ancel Points 1560

Je n’ai pas beaucoup de temps à analyser par ce biais, mais je pense que j’ai vu des réponses similaires. En particulier, je pense qu’ils font exactement ce que vous voulez faire ici :

http://StackOverflow.com/questions/695878/Entity-Framework-Generic-Repository-Error/698365

Espérons que cela aide, faites le moi savoir plus précisément si ce n’est pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X