Je veux convertir une chaîne en une valeur de propriété d'un objet, dont le nom est une chaîne. J'essaie de le faire de la manière suivante :
string modelProperty = "Some Property Name";
string value = "SomeValue";
var property = entity.GetType().GetProperty(modelProperty);
if (property != null) {
property.SetValue(entity,
Convert.ChangeType(value, property.PropertyType), null);
}
Le problème est que cette opération échoue et génère une exception Invalid Cast lorsque le type de propriété est un type nullable. Il ne s'agit pas d'un cas où les valeurs ne peuvent pas être converties - elles fonctionnent si je le fais manuellement (par ex. DateTime? d = Convert.ToDateTime(value);
) J'ai vu des questions similaires mais je n'arrive toujours pas à le faire fonctionner.
1 votes
J'utilise ExecuteScalar<int?> avec PetaPoco 4.0.3 et cela échoue pour la même raison : return (T)Convert.ChangeType(val, typeof(T)) à la ligne 554