Utiliser Reflection pour définir les valeurs de propriété avec des entrées de chaîne en C#
La manipulation d'objets nécessite souvent de définir des valeurs de propriété de manière dynamique, même lorsque ces valeurs sont initialement fournies sous forme de chaînes. Cela peut être délicat lorsque le type de la propriété diffère de la chaîne. L'utilisation directe de SetValue()
avec une incompatibilité de type entraîne un ArgumentException
.
Envisagez de mettre à jour la propriété "Latitude" d'un objet Ship
(un type numérique) en utilisant la chaîne "5.5". La solution réside dans la conversion de la chaîne vers le type de données correct avant l'affectation. Convert.ChangeType()
est idéal pour cette conversion de type d'exécution.
Voici comment mettre en œuvre cette solution :
<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>
Ce code exploite les informations de type d'exécution de propertyInfo.PropertyType
pour convertir correctement la chaîne "5.5" avant de définir la propriété "Latitude". Cette approche gère efficacement différents types de propriétés, fournissant une solution robuste pour l'attribution dynamique de valeurs de propriété à l'aide d'entrées de chaîne.
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!