Mon scénario devrait être simple ... le type que je veux convertir FROM est TOUJOURS 'chaîne'. Ce que je veux convertir ... pourrait être beaucoup de choses - ints, DateTimes, ... cordes, etc.Comment puis-je convertir des types au moment de l'exécution?
Ce serait facile:
string valueToConvertFrom = "123";
int blah = Convert.ToInt32(valueToConvertFrom);
Mais ... Je ne sais pas (jusqu'à l'exécution) que la valeur que je dois convertir en est un 'Int' (ou peu importe). J'ai essayé ceci:
string valueToConvertFrom = "123";
Type convertToType = typeof(int);
object blah = Convert.ChangeType(valueToConvertFrom, convertToType);
Mais cela me donne l'erreur suivante: "L'objet doit implémenter IConvertible."
Je ne veux pas avoir à faire une déclaration de commutateur et appeler "Convert.ToBlah" basé sur le nom de type ... des suggestions?
s'il vous plaît rouvrir et ajouter la réponse que vous avez trouvé, au cas où quelqu'un a d'autre le même ou un problème similaire à l'avenir –
La raison pour laquelle j'ai fermé ceci est parce que mon code avait un bug dedans ... Je tirais d'abord du mauvais champ, et ce champ n'a pas implémenté IConvertible. +1 pour les deux réponses ... "La classe String implémente IConvertible, ce code DEVRAIT simplement fonctionner" c'est vrai. Mais la solution d'Asher est géniale car j'ai appris quelque chose de nouveau (et c'est une solution très propre). Merci encore! –