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# ?

Comment définir en toute sécurité les valeurs des propriétés de chaîne à l'aide de Reflection en C# ?

Barbara Streisand
Libérer: 2025-01-20 10:38:09
original
746 Les gens l'ont consulté

How to Safely Set String Property Values Using Reflection in 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>
Copier après la connexion
  1. Obtenir les attributs : propertyInfo = ship.GetType().GetProperty("Latitude")Obtenir les informations sur l'attribut "Latitude".
  2. Convertir la valeur de la chaîne : 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.
  3. Définir la valeur de l'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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal