Maison >développement back-end >C++ >Comment puis-je définir la valeur d'une propriété à l'aide de la réflexion lorsque la valeur est une chaîne ?
Introduction : La manipulation d'objets par programmation via la réflexion nécessite souvent de définir des propriétés à l'aide d'affectations de différents types de données. Cette question explore une situation courante : définir une propriété avec une valeur de chaîne.
Question : Considérons une classe Ship qui possède une propriété Latitude de type double. Essayez de définir cette propriété en utilisant la réflexion, le code est le suivant :
<code>Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null);</code>
Cependant, ce code échoue avec une ArgumentException car la valeur de la chaîne ne peut pas être convertie directement en double.
Solution : Pour résoudre ce problème, la valeur de chaîne doit être explicitement convertie en type correct en fonction de PropertyInfo. Un outil courant à cet effet est Convert.ChangeType(). Il utilise les informations d'exécution pour convertir entre les types IConvertible.
Le code modifié à l'aide de Convert.ChangeType() est :
<code>Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, Convert.ChangeType(value, propertyInfo.PropertyType), null);</code>
Ce code définit avec succès la propriété Latitude sur une valeur double convertie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!