Considérez l'exemple de code suivant:
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 un long, ni cette valeur est toujours un nombre décimal. Cependant, je sais que cette valeur peut être convertie dans le type correct pour cette propriété.
Comment puis-je convertir le paramètre 'value' au type représenté par l'instance de PropertyInfo par réflexion?