Utilisez la réflexion pour définir les valeurs des attributs de chaîne
Définir les valeurs de propriété à l'aide de valeurs de réflexion et de chaîne peut être délicat car des conversions de type peuvent être nécessaires.
Supposons qu'il existe une classe Ship, qui possède une propriété appelée Latitude de type double. Le code suivant tente de définir cette propriété sur la valeur de chaîne « 5.5 » :
<code class="language-csharp">Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, value, null);</code>
Cependant, ce code lancera une ArgumentException car la valeur de la chaîne ne peut pas être directement convertie en type double.
Pour résoudre ce problème, vous pouvez utiliser Convert.ChangeType() pour la conversion de type. Cette fonction vous permet de convertir des valeurs en fonction des informations d'exécution du type cible. Le code suivant illustre cette approche :
<code class="language-csharp">Ship ship = new Ship(); string value = "5.5"; PropertyInfo propertyInfo = ship.GetType().GetProperty("Latitude"); propertyInfo.SetValue(ship, Convert.ChangeType(value, propertyInfo.PropertyType), null);</code>
En utilisant Convert.ChangeType(), la valeur de chaîne est convertie avec succès en type double et affectée à la propriété Latitude. Notez que si certains types spécifiques de conversions ne sont pas pris en charge, vous devrez peut-être gérer des exceptions ou implémenter une logique de cas particulier.
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!