Maison >développement back-end >C++ >Comment définir en toute sécurité les valeurs des propriétés de chaîne à l'aide de Reflection en C# ?
Utilisez la réflexion pour définir la valeur de l'attribut de type de chaîne
Lors de l'utilisation de la réflexion pour définir la valeur d'un attribut de type chaîne, si l'attribut cible attend d'autres types, cela peut provoquer une exception ArgumentException.
Solution : utilisez Convert.ChangeType() pour la conversion de type dynamique
Pour résoudre ce problème, vous pouvez utiliser la méthode Convert.ChangeType(). Cette méthode utilise les informations d'exécution pour convertir les types de données. Il est toutefois important de noter que toutes les conversions ne sont pas possibles.
Exemple de code :
Considérez l'extrait de code suivant :
<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>
propertyInfo = ship.GetType().GetProperty("Latitude")
Obtenir les informations sur l'attribut "Latitude". Convert.ChangeType(value, propertyInfo.PropertyType)
Convertit la chaîne "5,5" en un nombre à virgule flottante double précision, qui correspond au type d'attribut. propertyInfo.SetValue(ship, ..., null)
Définissez l'attribut sur la valeur convertie. Remarque : Cette solution ne suppose aucune gestion des exceptions ni logique de cas particulier pour les types qui ne peuvent pas être convertis directement à l'aide de Convert.ChangeType().
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!