J'ai ce document XML
object test = (object) ((typeof(publishNode.Attributes["Type"].value)) publishNode.InnerText);
3 Réponses :
Vous ne pouvez pas faire exactement ce que vous essayez de faire. Tout d'abord, le mot-clé code> de type code> n'est pas autorisé à une évaluation dynamique au moment de l'exécution. Il existe des moyens par lesquels le faire à l'aide de la réflexion, avec des méthodes telles que Ce que vous devez faire est de fournir un moyen de convertir votre type à une représentation à chaîne. Il n'y a pas de conversion automatique d'un type arbitraire. Pour votre exemple, vous pouvez utiliser type.getype (string) code>, mais le type code> Les objets code> renvoyés à partir de ces fonctions réfléchissantes ne peuvent pas être utilisés pour opérations telles que la coulée. P>
bool.parse code> ou
bool.trypsarse code>, mais ceux-ci sont spécifiques au type
bool code>. Il existe des méthodes similaires sur la plupart des types primitifs. P>
Vous pouvez utiliser convert.changetype code>:
Oui, et pour obtenir DestinationType, utilisez Varnat DestinatType = Type.Parse (PublishNode.ATtributes ["Type"]. Valeur);
Type.parrse () ne semble pas exister. Avez-vous voulu dire type.gettype () par hasardype ()?
La solution simple, en supposant qu'il existe un nombre limité de types possibles;
Je travaille avec .NET Framework 2.0. et je n'ai pas var. Et la solution que vous avez suggérée est l'usine mettant en œuvre la création de vraisures de tous types, qui sont innombrables. Mais merci de votre aide quand même.
Eh bien, le var était juste pour rendre le code plus court, vous pouvez utiliser une chaîne, une chaîne, un objet pour ces trois à la place. Et, comme je l'ai dit, si vous n'avez besoin que de supporter un nombre limité de types, cela fonctionnerait bien. Sinon, alors vous avez raison de dire que ce n'est pas pratique.
Avec C # 6, vous pouvez utiliser Case Nameof (System.Guid): Code> Par exemple. Pas besoin de cordes constantes plus. Nomof est compilé le temps généré.