Comment puis-je Convertir des Types à l'Exécution?
Mon scénario devrait être simple... le genre je veux convertir DE est TOUJOURS 'string'. Ce que je veux convertir... il pourrait être beaucoup de choses - ints, DateTimes, ... les cordes, etc.
Ce serait facile:
string valueToConvertFrom = "123";
int blah = Convert.ToInt32(valueToConvertFrom);
Cependant... je ne sais pas (jusqu'à l'exécution) que la valeur que j'ai besoin de les convertir à un 'Int' (ou autre). J'ai essayé ceci:
string valueToConvertFrom = "123";
Type convertToType = typeof(int);
object blah = Convert.ChangeType(valueToConvertFrom, convertToType);
Mais qui me donne l'erreur suivante: "l'Objet doit implémenter IConvertible."
Je ne veux pas avoir à faire une instruction de commutation et de l'appeler "Convertir.ToBlah" basé sur le nom du type de... des suggestions?
- merci de rouvrir et de les ajouter à la réponse que vous avez trouvé, au cas où quelqu'un d'autre a le même ou un problème similaire dans l'avenir
- La raison pourquoi j'ai fermé c'est parce que mon code a un bug... j'ai été tirer le mauvais champ initialement, et que le champ n'est pas de mettre en œuvre IConvertible. +1 pour les deux réponses... "Chaîne de classe implémente IConvertible, ce code DEVRAIT fonctionner" c'est vrai. Mais Asher la solution est bonne, comme j'ai appris quelque chose de nouveau (et c'est un très propre solution). Merci encore!
Vous devez vous connecter pour publier un commentaire.
le propre façon de le faire est d'utiliser l'un TypeConverter.
vous pouvez obtenir une instance d'un type de convertisseur en appelant le TypeDescriptor.GetConverter et puis, à l'aide de l'instance du type de convertisseur à faire la conversion.
donc quelque chose comme ceci:
Chaîne de classe implémente IConvertible, ce code DEVRAIT fonctionner. La version de .NET visez-vous?
En outre, la plupart des types que vous avez mentionné implémenter la méthode d'analyse, de sorte que votre meilleur coup peut-être quelque chose comme ça.
De timothée question, appliquée généralement à la question de la conversion de Type dans .NET, est un très gros problème. Alors que les stratégies de conversion sont un peu simple dans des scénarios spécifiques avec des types connus, il n'est malheureusement pas généralisé de la stratégie de la mise en application de .NET pour accomplir la conversion de Type à l'exécution à partir d'un Type arbitraire à un autre, ni d'une telle stratégie à venir à partir de Redmond. Toutefois, Microsoft fournit quelques bonnes lignes directrices pour le concept général de la conversion de Type, y compris:
J'ai eu à traiter avec le même problème dans mes systèmes, et comme une solution, j'ai consolidé les stratégies d'une méthode. La portée de cette question est vaste et les stratégies de conversion sont variées, de sorte que cette approche consolidée ne peuvent être couverts dans une technique complète de l'article. Cependant, je vous propose ici une copie de ma documentation de la méthode dans l'espoir que ce sera vous aider à obtenir une prise ferme sur l'ensemble des exigences auxquelles vous devez répondre, si vous voulez développer un semblable, généralisée solution. Voici le lien vers ma documentation:
J'espère que cela vous aide,
Marque