Considérons le code exemple suivant:« casting » avec la réflexion
class SampleClass
{
public long SomeProperty { get; set; }
}
public void SetValue(SampleClass instance, decimal value)
{
// value is of type decimal, but is in reality a natural number => cast
instance.SomeProperty = (long)value;
}
Maintenant, je dois faire quelque chose de similaire par la réflexion:
void SetValue(PropertyInfo info, object instance, object value)
{
// throws System.ArgumentException: Decimal can not be converted to Int64
info.SetValue(instance, value)
}
Notez que je ne peux pas supposer que le PropertyInfo représente toujours une longue , ni cette valeur est toujours une décimale. Cependant, je sais que la valeur peut être castée au bon type pour cette propriété.
Comment puis-je convertir le paramètre 'value' en type représenté par PropertyInfo par réflexion?
cela a fonctionné pour moi, explication très claire, merci –